注入Angular 2路由器无法正常工作

时间:2016-08-24 20:49:07

标签: angular dependency-injection angular-ui-router

我之前发布了一个关于DI的问题,此后我发现了同样的问题。我不知道我在做什么或我的开发设置?

我试图将Router注入组件。我的包含模块看起来像这样

import { NgModule }      from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { Router } from '@angular/router';

import { LoginComponent }  from './login.component';

import { User } from '../user/user';

@NgModule({
  imports:      [ BrowserModule, FormsModule, Router ],
  declarations: [ LoginComponent ],
  bootstrap:    [ LoginComponent ]
})

export class LoginModule { }

这是我的组件

import { Component } from '@angular/core';
import { Inject } from '@angular/core';
import { Router } from '@angular/router';

import { User } from '../user/user';

@Component({
  templateUrl: './login.template.html'
})

export class LoginComponent { 
    user = new User( "", "" );
    submitted:boolean = false;
    inProgress:boolean = false;

    constructor ( private router : Router ) {

    } 

}

当我运行应用程序时,我收到以下错误

Can't resolve all parameters for LoginComponent

我的构建过程如下:

运行inline-angular-compiler(在实际的js文件中嵌入templateUrl) 运行tsc(从ts转换为js)

我听说运行打字稿转换器会导致DI问题但是替代方案是什么?

编辑:

我的路由器设置

import { Routes, RouterModule } from '@angular/router';

import { AppComponent } from './app.component';
import { DashboardComponent } from './dashboard/dashboard.component';

import { UserRoutes } from './user/user.routing';
import { DashboardRoutes } from './dashboard/dashboard.routing';
import { LoginRoutes } from './login/login.routing';

const routes: Routes = [
    ...UserRoutes,
    ...DashboardRoutes,
    ...LoginRoutes,
    //this needs to redirect to a homepage
    {path:'', component: DashboardComponent}
];

export const appRoutingProviders: any[] = [

];

export const routing = RouterModule.forRoot( routes );

1 个答案:

答案 0 :(得分:0)

好的,所以我做了一些阅读,结果发现一些打字稿编译器不像Angular推荐的那样处理Angular DI。我之前一直在使用自己的构建过程,该过程使用了不同类型的脚本编译器。

解决方案是将构建过程恢复为使用angular建议的过程。一个非常奇怪的问题和难以诊断的问题。

感谢大家的帮助。