2016-08-11 24 views
9

Sau khi nâng cấp góc 2 đến RC5, tôi đã nhận được cảnh báo như dưới đây yêu cầu tôi di chuyển các thành phần của tôi đến module tờ khai:RC5 NgModules tờ khai

NgModule AppModule sử dụng AcademylistComponent qua "entryComponents" nhưng nó đã không tuyên bố hay đã nhập! Cảnh báo này sẽ trở thành lỗi sau lần cuối cùng.

Tôi đã tham khảo các thành phần này trong tệp cấu hình bộ định tuyến của mình. Cái gì đó trông như thế này:

import {provideRouter,RouterConfig} from '@angular/router'; 
import {AcademylistComponent} from '../modules/home/component/academyList.component'; 
import {CourselistComponent} from '../modules/home/component/courseList.component'; 
import {CreateacademyComponent} from '../modules/home/component/createAcademy.component'; 
import {ReportsComponent} from '../modules/home/component/reports.component'; 
import {AuthenticatedGuard} from '../guards/authenticated.guard'; 

export const routes: RouterConfig = [ 
{ 
    path: '', 
    redirectTo:'/home', 
    terminal:true}, 
{ 
    path: 'home', 
    canActivate: [AuthenticatedGuard], 
    children: [ 

     {path: '', component: AcademylistComponent}, 
     {path: 'my-academies', component: AcademylistComponent}, 
     {path: 'my-courses', component: CourselistComponent}, 
     {path: 'create-academy', component: CreateacademyComponent}, 
     {path: 'reports', component: ReportsComponent} 

    ] 

} 

]; 

export const APP_ROUTER_PROVIDERS = [ 
provideRouter(routes) 
]; 

Khi tôi di chuyển các thành phần để ng declarations mảng mô-đun và nhập khẩu chúng ở đó, các tuyến đường tập tin cấu hình đã bắt đầu đem lại cho tôi Cannot find name lỗi.

Vậy làm cách nào để tôi sử dụng khai báo mô-đun trong trường hợp này?

+0

bạn có thể hiển thị cho chúng tôi mã hiện tại (NgModule) không? –

Trả lời

10

Thậm chí nếu bạn khai báo chúng trong các tuyến đường của bạn, bạn vẫn phải khai báo các thành phần được sử dụng trong các tuyến đường trong NgModule.

@NgModule({ 
    declarations: [ 
    AcademylistComponent, 
    //.. and so on 
    ], 
    providers: [ 
    APP_ROUTER_PROVIDERS 
    ] 
}) 
export class AppModule {} 
+0

Theo https://angular.io/docs/ts/latest/cookbook/rc4-to-rc5.html: "Đối với RC5, bạn có thể để lại các thành phần, chỉ thị và đường ống của bạn trong các chỉ thị và các thuộc tính ống của @Component của bạn siêu dữ liệu ... Tùy chọn này là tạm thời cho khả năng tương thích ngược. Tùy chọn này sẽ bị xóa trong bản phát hành cuối cùng của Angular 2.0. Dẫn đầu trò chơi và bắt đầu di chuyển các chỉ thị thành phần và đường ống của bạn vào khai báo mô-đun càng sớm càng tốt. " – TrumanCode

+0

Một câu hỏi nhanh. Nếu tôi loại bỏ một thành phần/chỉ thị/ống từ mảng của nhà cung cấp/chỉ thị của thành phần và thêm nó vào mảng của nhà cung cấp NgModule, tôi vẫn phải 'nhập ...' thành phần/đường ống/chỉ thị đó trong thành phần? Tôi gặp lỗi mà không làm như vậy. Đây có phải là cách tiếp cận đúng không? – xmaestro

+0

@TrumanCode Ngoài ra, liên kết mà bạn đề cập đến chỉ yêu cầu chúng tôi thực hiện điều này cho app.component. Tôi giả sử, chúng ta phải làm tương tự cho tất cả các thành phần trong ứng dụng? – xmaestro

Các vấn đề liên quan