Таможенная труба не может быть найдена
Я построил трубу, но не могу понять, почему 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.