Как использовать автономные компоненты, конвейеры или директивы в функциональных модулях
Я обновил свой проект angular до angular 14. Теперь я хочу иметь немногоstandalone components
,pipes
, илиdirectives
.
У меня есть рекомендуемый модуль с именем ProductModule , и я хочу использовать в этом модуле автономный канал, называемый в верхнем регистре .
// structure
---Product
---product.component
---product.service
---product.module.ts
---StandabloneFolder
---uppercase.pipe.ts
Моя заглавная труба
@Pipe({
name: 'uppercase',
standalone: true,
})
export class UppercasePipe implements PipeTransform {
transform(value: string): string {
return "UPPERCASE_INPUT"
}
}
в product.component.html
{{'Abolfazl Roshanzamir' |uppercase}}
получить следующую ошибку:
Не найден канал с именем 'uppercase' product.component.ts(6, 39): ошибка в шаблоне компонента ProductComponent.
ПРИМЕЧАНИЕ:
Эта проблема будет решена, если я добавлюstandalone: true
в product.component и удалите ProductComponent из массива объявлений .
3 ответа
вам нужно только импортировать его в компонент раздела импорта
import { Component } from '@angular/core';
@Component({
templateUrl: './basic-page.component.html',
standalone: true,
styles: [],
imports: [JsonPipe],
})
export class BasicPageComponent {}
HTML-шаблон:
<pre>{{ "objeto" | json }}</pre>
Вам нужно добавить UppercasePipe вimports
из product.module.ts.
product.module.ts
@NgModule({
imports: [/*some import*/, UppercasePipe],
/* other stuff*/
})
export class ProductModule {}
Если вы хотите, чтобы ваш канал был автономным, вы можете сделать атрибут автономный истинным.
бывший:
@Pipe({
name: 'my_pipe_name',
standalone: true,
})
Примечание. Я использовал это с angular 17, я не знаю, то же самое ли это с angular 14.