Angular Router Providers的继承

时间:2018-01-16 01:27:07

标签: angular angular-router

我最近试图重构一些代码并遇到了一个我不明白的问题。我有一个导出微调器的共享模块:

@NgModule({
...snip...
exports: [ ...snip..., Spinner, ....snip....]
}
export class SharedModule { }

然后我将此模块导入其他模块。我搬到儿童路线时遇到了一个问题

其他模块:

import { NgModule } from '@angular/core';
import { SharedModule } from 'app/shared/shared.module';
import { Component} from './component';
@NgModule({
    imports: [
        SharedModule,
        OtherRoutingModule
    ],
    declarations: [Component]
})
export class OtherModule { }

路由模块:

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

import { Component} from './component';
import { OneComponent } from './one/one.component";

const routes: Routes = [
    {
        path: '',
        component: Component,
        children: [
            {
                path: '',
                redirectTo: 'one',
                pathMatch: 'full'
            },
            {
                path: 'one',
                component: OneComponent
            }
        ]
    }
];

@NgModule({
    imports: [RouterModule.forChild(routes)],
    exports: [RouterModule],
    declarations: [
        OneComponent
    ]
})
export class OtherRoutingModule { }

我的问题是:如果我尝试在<spinner></spinner>中使用Spinner组件(Component),它会起作用,但如果我尝试在OneComponent内使用它,我会收到错误:

  

错误错误:未捕获(承诺):错误:模板解析错误:&#39;微调器&#39;不是一个已知的元素

Component <- using spinner here works
OneComponent <- Using spinner here causes error

如果我声明模块中的所有组件,而不是路由模块,它可以工作,直到我从路由模块声明子组件我得到了问题。由此我假设它与继承有关,但我不明白为什么 - 我相信我也可以通过在路由模块中导入SharedModule来解决它,但这似乎有点过头了当路由模块是模块的扩展(OtherModule

任何帮助都将不胜感激。

修改 https://stackblitz.com/edit/angular-yjckdu

链接到示例。在示例中,如果将<app-spinner></app-spinner>添加到组件OtherOne(app / other / other-one / other-one.component.html),它将失败,但是在组件中声明时它可以正常工作(OtherComponent

关于命名惯例的道歉,我应该选择其他词......

0 个答案:

没有答案