angular2 - 未定义ROUTER_PROVIDERS

时间:2016-07-25 16:03:11

标签: angular router

我在 system.config.js 中有这个代码,当涉及到导入angular2的旧路由器(不推荐使用的路由器)时。

'@angular/router-deprecated': 'npmcdn:@angular/router-deprecated@'+angularVersion,

我收到了这个错误:

system.src.js:43 Uncaught (in promise) Error: ROUTER_PROVIDERS is not defined(…)

这是plunkr here

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

你的掠夺者有几个问题。

app/index.ts

  • 添加导入:

    import { ROUTER_PROVIDERS } from '@angular/router-deprecated';
    import { HashLocationStrategy, LocationStrategy } from '@angular/common';
    import { provide } from '@angular/core';
    
  • 不是强制性的,但您应该删除.ts扩展程序:

    import { App } from './app2.ts';
    

    应该是:

    import { App } from './app2';
    

app/home.ts

  • 添加templateUrl的路径:

    templateUrl: './home.html'
    

    变为:

    templateUrl: './app/home.html'
    

app/add_developer.ts

  • 同时添加templateUrl的路径:

    templateUrl: './add_developer.html'
    

    变为:

    templateUrl: './app/add_developer.html'
    

常规:更新*ngFor表示法

  • 考虑将*ngFor表示法更新为最新表示法。你在几个地方使用它。使用let代替#。例如,在app/home.html

    <tr *ngFor="#dev of getDevelopers()">
    

    应该是

    <tr *ngFor="let dev of getDevelopers()">
    

Click here for your updated plunker(包括*ngFor更改)。

答案 1 :(得分:0)

index.ts

中添加以下行
import { ROUTER_PROVIDERS, RouteConfig, ROUTER_DIRECTIVES } from '@angular/router-deprecated';

app2.ts 文件中添加providers: [ROUTER_PROVIDERS]