我得到这个错误:
EXCEPTION:./AppComponent类中的错误AppComponent - 内联模板:0:0引起:没有路由器的提供者!
这是我的应用程序组件:
import {Component} from '@angular/core';
import {LoginComponent} from './login/components/login.component';
@Component({
selector: 'my-app',
template: '<login></login>',
})
export class AppComponent {
}
Run Code Online (Sandbox Code Playgroud)
我在我的app模块中尝试了这个:
import { RouterModule } from '@angular/router';
imports: [
BrowserModule,
FormsModule,
HttpModule,
LoginModule,
RouterModule
],
bootstrap: [AppComponent, RouterModule]
Run Code Online (Sandbox Code Playgroud)
但后来我得到这个错误:
错误:错误:在RouterModule上找不到指令注释
我找到了一些例子,但他们使用路由器弃用了,我没有那个文件夹.我需要那个还是什么?任何建议?
更新:
这是我的app.module:
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { AppComponent } from './app.component';
import { LoginModule } from './login/login.module';
import { RouterModule } from '@angular/router';
//import 'rxjs/Rx';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule,
LoginModule,
RouterModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
Run Code Online (Sandbox Code Playgroud)
app.component:
import {Component} from '@angular/core';
import {LoginComponent} from './login/components/login.component';
@Component({
selector: 'my-app',
template: '<login></login>',
})
export class AppComponent {
}
Run Code Online (Sandbox Code Playgroud)
然后我有login.component:
import {Component, EventEmitter, Input, OnChanges} from '@angular/core';
import {Observable} from 'rxjs/Rx';
import { LoginService } from '../services/login.service';
import { Login } from '../model/login'
import {Router} from '@angular/router';
@Component({
selector: 'login',
templateUrl: 'login-form',
})
export class LoginComponent {
// Constructor with injected service
constructor(
private loginService: LoginService,
private router: Router
){}
submitLogin(values){
// Variable to hold a reference of addComment/updateComment
let loginOperation:Observable<any>;
loginOperation = this.loginService.Login(values);
loginOperation.subscribe(
function(response) { console.log("Success Response" + response)},
function(error) { console.log("Error happened" + error)},
function() {
console.log("the subscription is completed");
this.router.navigate(['/About']);
}
);
}
}
Run Code Online (Sandbox Code Playgroud)
也许问题在于这一行:
this.router.navigate(['/home']);
Run Code Online (Sandbox Code Playgroud)
这是我的login.module:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { HttpModule, JsonpModule } from '@angular/http';
import { LoginComponent } from './components/login.component';
import { RouterModule } from '@angular/router';
import { LoginService } from './services/login.service';
@NgModule({
imports: [
BrowserModule,
FormsModule,
HttpModule,
JsonpModule,
RouterModule
],
declarations: [
LoginComponent
],
providers: [
LoginService
],
exports:[
LoginComponent
]
})
export class LoginModule {
}
Run Code Online (Sandbox Code Playgroud)
Uma*_*nis 35
请使用此模块
RouterModule.forRoot(
[
{ path: "", component: LoginComponent}
]
)
Run Code Online (Sandbox Code Playgroud)
现在只需更换您<login></login>与<router-outlet></router-outlet>完蛋了
Ale*_*xei 26
在为组件开发自动测试时,我也收到了这个错误。在这种情况下,应完成以下导入:
import { RouterTestingModule } from "@angular/router/testing";
const testBedConfiguration = {
imports: [SharedModule,
BrowserAnimationsModule,
RouterTestingModule.withRoutes([]),
],
Run Code Online (Sandbox Code Playgroud)
Sut*_*onY 18
Babar Bilal的回答可能对早期的Angular 2 alpha/beta版本有效.但是,任何使用Angular版本v4 +解决此问题的人都可能希望尝试对其答案进行以下更改(将所需的数据包装在所需的数组中):
RouterModule.forRoot([{ path: "", component: LoginComponent}])
Run Code Online (Sandbox Code Playgroud)
从这个脚步什么都没有。“ forRoot”没有帮助。
抱歉。整理出来。我设法通过为此“ forRoot”路由器设置例程设置正确的“路由”来使其工作
import {RouterModule, Routes} from '@angular/router';
import {AppComponent} from './app.component';
const appRoutes: Routes = [
{path: 'UI/part1/Details', component: DetailsComponent}
];
@NgModule({
declarations: [
AppComponent,
DetailsComponent
],
imports: [
BrowserModule,
HttpClientModule,
RouterModule.forRoot(appRoutes)
],
providers: [DetailsService],
bootstrap: [AppComponent]
})
Run Code Online (Sandbox Code Playgroud)
也可能会有所帮助(花一些时间来实现这一点) 可选路线部分:
const appRoutes: Routes = [
{path: 'UI/part1/Details', component: DetailsComponent},
{path: ':project/UI/part1/Details', component: DetailsComponent}
];
Run Code Online (Sandbox Code Playgroud)
第二条规则允许打开“ hostname / test / UI / part1 / Details?id = 666”和“ hostname / UI / part1 / Details?id = 666”之类的 URL。
自2012年以来一直从事前端开发人员的工作,但从未遇到过诸如Angular2这样复杂的事情(我在企业级ExtJS方面拥有3年的经验)
| 归档时间: |
|
| 查看次数: |
79408 次 |
| 最近记录: |