0
我正在从RC4升级到2.1.2。我了解ROUTER_DIRECTIVES已弃用。所以在我的LoginComponent现在看起来是这样(SystemJS)无法为Angular 2.1.2中的路由器解析所有参数
import {Component,Injectable} from '@angular/core';
import {Router,RouterModule} from '@angular/router';
import {FormBuilder, Validators, FormGroup, FormsModule} from '@angular/forms';
import {AuthService} from './auth.service';
@Component({
selector: 'login',
templateUrl: 'app/login/auth.login.html',
styleUrls: ['app/login/auth.login.css'],
providers: [FormBuilder, AuthService, { provide: Router, useClass: RouterModule} ]
})
@Injectable()
export class LoginComponent {
form: FormGroup;
constructor(fb: FormBuilder,
private authSvc: AuthService,
private router: Router
) {....}
在app.routing.module.ts我
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule],
providers: [ AuthGuard, ]
})
export class AppRoutingModule { }
然后我得到的错误如下
[email protected]?main=browser:232 Error: (SystemJS) Can't resolve all parameters for Router: (?, ?, ?, ?, ?, ?, ?, ?).(…)
我已经试过的感动{ provide: Router, useClass: RouterModule}
到app.routing.module.ts但它没有帮助。
在RC4中,我们在根组件中使用了directives: [ROUTER_DIRECTIVES]
,并且一切都得到了照顾。我如何使用RouterModule使编译器解决路由器问题?
在**删除**'{provide:Router,useClass:RouterModule}'之后,它应该可以工作,因为您已将AppRoutingModule添加到应用模块导入。除此之外,请尝试提供更好的帮助。 –
我没有提供'{provide:Router,useClass:RouterModule}'并且出现错误。然后我看着http://stackoverflow.com/questions/39015918/cant-resolve-all-parameters-for-router-in-angular-rc-5-w并开始添加'{提供:路由器,useClass:RouterModule} '但它也没有帮助。所以通过删除'{提供:路由器,useClass:RouterModule}'我仍然会收到错误。它一定是我可能错过的其他东西? – Shawn
感谢您指出,所以我可以投它:-)这不是一个解决方案。你需要更好地理解DI才能意识到这是一个dufus的想法。就像我所说的,它应该在您将AppRoutingModule导入到应用程序模块后运行。你能否提供一个能够重现问题的Plunker? –