【问题标题】:'router-outlet' is not a known element Angular2“路由器插座”不是已知元素 Angular2
【发布时间】:2017-03-08 14:03:13
【问题描述】:

回购:https://github.com/leongaban/lifeleveler.io

不知道为什么会出现这个错误,我在 app.component.ts 中导入了路由器

我正在尝试使用app.component 来保存主要的<router-outlet>,并首先提供登录视图。

app.module

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

import { routing } from './app.routing';
import { AppComponent } from './app.component';
import { LoginComponent } from './login/login.component';
import { AuthService } from './shared/services/auth.service';

import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/do';
import 'rxjs/add/observable/throw';

@NgModule({
    imports: [
        BrowserModule,
        FormsModule,
        RouterModule,
        routing
    ],
    declarations: [
        AppComponent,
        LoginComponent
    ],
    providers: [
        AuthService,
    ],
    bootstrap: [ AppComponent ]
})
export class AppModule {}

app.component.ts

import { Component, OnInit } from '@angular/core';
import { User } from './shared/models/user';
import { Router } from '@angular/router';

@Component({
    selector: 'my-app',
    templateUrl: './app/app.component.html',
    styleUrls: ['./app/app.component.css']
})
export class AppComponent implements OnInit {
    ngOnInit() {

    }
}

app.component.html

<router-outlet></router-outlet>

app.routing.ts

import { ModuleWithProviders } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { LoginComponent } from './login/login.component';

export const routes: Routes = [
    {
        path: '',
        redirectTo: '/login',
        pathMatch: 'full',
    },
    {
        path: 'login',
        component: LoginComponent
    }
]

export const routing: ModuleWithProviders = RouterModule.forRoot(routes);

【问题讨论】:

  • 我自己对 Angular2 还是很陌生。我会尝试将RouterModule 添加到您的 app.module NgModule 导入
  • 你的代码没问题,但你有这方面的麻烦
  • 我刚试了一下,还是一样的错误:(
  • 这段代码没有问题。不要导入routingRouterModule 因为routingRouterModule 相同,但有一些配置
  • 你会用新的@angular/cli 解决问题,别担心,这很容易

标签: javascript angular angular2-routing


【解决方案1】:

我刚刚用 webpack 重构了你的项目,你同样的代码工作得很好:

github repo

第一:

npm install -g @angular/cli

npm install 

ng serve

【讨论】:

  • 谢谢!嗯,我分叉并下载了它,npm install 然后必须使用警告中的新环境内容更新 angular-cli.json,但现在在 ng serve ERROR in ./src/main.ts Module build failed: TypeError: Cannot read property 'newLine' of undefined 上出现此错误
  • ERROR in ./src/polyfills.ts Module build failed: TypeError: Cannot read property 'newLine' of undefined
  • 检查这个,因为这是答案,即使我无法让应用程序运行。 Angular-CLI 是构建新的 ng2 应用程序的方式。
【解决方案2】:

看起来您可能会多次导入 RouterModule。

我会从您的app.routing.ts 中删除此行

export const routing: ModuleWithProviders = RouterModule.forRoot(routes);

在您的app.module 中,我将导入您的路线:

import { routes } from './app.routing';

然后将RouterModule 导入为:

RouterModule.forRoot(routes)

【讨论】:

    【解决方案3】:

    您应该在您的AppModule 中添加RouterModule.forRoot(routes) 语句:

    @NgModule({
        imports: [
            BrowserModule,
            FormsModule,
            RouterModule.forRoot(routes)
        ],
        declarations: [
            AppComponent,
            LoginComponent
        ],
        providers: [
            AuthService,
        ],
        bootstrap: [ AppComponent ]
    })
    export class AppModule {}
    

    并将其从您的 app.routing.ts 文件中删除:

    export const routes: Routes = [
        {
            path: '',
            redirectTo: '/login',
            pathMatch: 'full',
        },
        {
            path: 'login',
            component: LoginComponent
        }
    ];
    

    【讨论】:

    【解决方案4】:

    只需导入RouterOutlet

    import { RouterOutlet } from '@angular/router';
    

    【讨论】:

      猜你喜欢
      • 2017-03-11
      • 2017-07-26
      • 2020-06-08
      • 2021-11-11
      • 2017-04-29
      • 1970-01-01
      • 2017-05-07
      • 2017-03-21
      • 2021-03-13
      相关资源
      最近更新 更多