Таможенная труба не может быть найдена

Я построил трубу, но не могу понять, почему Angular не может ее найти.

Мой топ-модуль - это мой shared.module

Этот модуль в свою очередь интегрируется в browser.module или server.module.

Кроме того, у меня user.module как самый низкий уровень, куда входят все компоненты пользователя.

если я определю свою трубу в user.module, труба будет найдена.

import { ExponentialStrengthPipe } from '../../exponential-strength.pipe';
[...]

@NgModule({
    declarations: [ [...]

        ExponentialStrengthPipe
    ],
    imports: [
        CommonModule,
        HttpModule,
        FormsModule,
        ReactiveFormsModule,
        RouterModule.forChild([...])
    ],

})
export class UserModule {
    constructor(
    ) {
    }

}

если я установлю его в свой общий доступ. модуль, не более

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { ExponentialStrengthPipe } from './exponential-strength.pipe';
[...]
@NgModule({
    declarations: [
        AppComponent,
[...]
        ExponentialStrengthPipe
    ],

    providers: [
        UserService

    ],
    imports: [
        CommonModule,
        RouterModule.forRoot([
            { path: 'home', component: HomeComponent },
            { path: '', redirectTo: 'home', pathMatch: 'full' },
            { path: '**', component: PageNotFoundComponent },
        ]),
    ],
    exports: [
        ExponentialStrengthPipe
        ]

})
export class AppModuleShared {
    constructor(
    ) {
    }

}

1 ответ

Если вы хотите использовать канал в другом модуле, добавьте модуль, для которого канал объявлен imports: [...] модуля, в котором вы хотите повторно использовать канал, а не добавлять его в declarations: [] модуля. Если вы добавите трубу в несколько declarations:[] вы получите сообщение об ошибке, заявив, что вы объявили канал в нескольких модулях. Так что в этом случае вы должны добавить трубу в declarations: [] общего модуля и добавьте общий модуль в imports: [...] в модуле вы хотите использовать трубу. (Пример: пользовательский модуль)

Вы должны включить свой канал в массив объявлений AppModule. Если вы решили внедрить канал в класс, вы должны предоставить его в массиве поставщиков вашего NgModule.

Другие вопросы по тегам