Angular2 - "маршрутизатор-розетка" не є відомим елементом


79

Я створив маршрути з глибокими дитячими стежками. Я додав <router-outlet>до компонента AdminComponent, який обернув у NgModule. Але після оновлення сторінки я отримав таку помилку:

'router-outlet' is not a known element

Можливо, це сталося тому, що я забув імпортувати якийсь модуль до admin.module.ts

Будь ласка, допоможіть. Дякую.

app.routes.ts

export const routes: Routes = [
    {
        path: '',
        component: AppComponent,
        children: [
            {
                path: '',
                component: LoginComponent
            },
            {
                path: 'admin',
                component: AdminComponent
            },
            {
                path: 'user',
                component: UserComponent
            },
            {
                path: 'there',
                component: ThereComponent
            }
        ]
    }
]

app.module.ts

@NgModule({
    imports: [
        BrowserModule,
        AppRoutes,
        FormsModule,
        ReactiveFormsModule,
        HttpModule,
        RouterModule,
        TranslateModule.forRoot({
            provide: TranslateLoader,
            useFactory: (http: Http) => {
                return new TranslateStaticLoader(http, './src/assets/i18n', '.json')
            },
            deps: [Http]
        }),
        UserComponentModule,
        AdminComponentModule,
        LoginComponentModule,
        ThereComponentModule,
        DashboardComponentModule
    ],
    declarations: [
        AppComponent
    ],
    providers: [
        FormBuilder
    ],
    bootstrap: [AppComponent]
})

admin.component.ts та admin.module.ts

//  admin.component.ts
import {Component} from "@angular/core";

@Component({
    selector: 'admin',
    template: "<router-outlet></router-outlet>",
})

export class AdminComponent {
    constructor() {

    }
}

//  admin.module.ts
const ADMIN_DECLARATION = [
    AdminComponent
];

@NgModule({
    imports: [
        BrowserModule,
        TranslateModule,
        FormsModule,
        ReactiveFormsModule
    ],
    declarations: [
        ADMIN_DECLARATION
    ],
    exports: [
        ADMIN_DECLARATION
    ],
    providers: [
        TranslateService,
        FormBuilder
    ]
})

export class AdminComponentModule {

}

Мені просто не вистачало;
Мехраджа Маліка

Відповіді:


87

AdminComponentє частиною, AdminComponentModuleі ви не імпортували RouterModuleвсередині AdminComponentModuleмодуля:

//  admin.component.ts
import {Component} from "@angular/core";

@Component({
    selector: 'admin',
    template: "<router-outlet></router-outlet>",
})

export class AdminComponent {
    constructor() {

    }
}

//  admin.module.ts
const ADMIN_DECLARATION = [
    AdminComponent
];

@NgModule({
    imports: [
        BrowserModule,
        TranslateModule,
        RouterModule,
        FormsModule,
        ReactiveFormsModule
    ],
    declarations: [
        ADMIN_DECLARATION
    ],
    exports: [
        ADMIN_DECLARATION
    ],
    providers: [
        TranslateService,
        FormBuilder
    ]
})

export class AdminComponentModule {

}

Привіт @yankee! Я використовую функцію ледачого модуля, і я відокремив файл app.routing.module.ts. якщо я включаю 'import {AppRoutingModule} from' ./app-routing.module '; і імпорт в app.module.ts потім знову стикається stackoverflow.com/questions/49670232 / ... питання. Просити допомогти, якщо це можливо '
Swapnil Yeole


7

Додайте цей код

import { provideRoutes} from '@angular/router';

твоєму app.module.ts

Працював у мене.


З задоволенням, сер :)
pulkit219

Дякую, це мені допомогло .... Взагалі запитую, чи читаєте ви хлопці всі документи з веб-сайтів чи просто знаєте речі на досвіді ???
Gvs Akhil

@Akhil З задоволенням, ні, я просто шукав, як ти, і якийсь коментар мені допоміг. Просто читати документацію мені ніколи не було просто!
pulkit219

4

У вашому файлі app.module.ts

import { routing } from './app-routing.module';

//and then write within imports
@NgModule({
  declarations: [
    AppComponent,
    NavbarComponent
  ],
  imports: [
    BrowserModule,
    **routing**,
    EmployeeModule
  ],


0

app.module.ts

import { MyRoutingModule } from './MyRoutingModulePath';

  @NgModule({
  imports: [
    MyRoutingModule
  ])

Незважаючи на те, що це може відповісти на питання авторів, у ньому відсутні деякі пояснювальні слова та посилання на документацію. Фрагменти необробленого коду не дуже корисні без деяких фраз навколо них. Можливо, вам також дуже корисно написати хорошу відповідь . Будь ласка, відредагуйте свою відповідь.
hellow

У моїй пізній відповіді немає нічого оригінального. Я боровся із впровадженням рішень, знайдених в Інтернеті. Виснажливий, заплутаний і витратний час через мої архітектурні особливості. Я шукав коротку відповідь, щоб вказати мені на рішення, замість того, щоб навчити мене процесу. Після того, як мені нарешті це вдалося, для мене стало очевидним, що було важко спостерігати на повних прикладах. Звичайно, є багато способів зазнати невдачі. Але багато хто зазнає невдачі так само, як і я. Ця відповідь для тих, хто так близько може це виправити, але далеко не правильно.
profimedica
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.