У меня несколько каналов, и я хочу добавить один или несколько каналов в зависимости от условия к моему элементу ввода.
Необходимо проверить, имеет ли элемент ввода (this) определенный стиль (this.styles) и на основе этого стиля к входному элементу должна быть добавлена труба.
Итак, если стиль ReverseString
, труба reverseStr
должна быть добавлена к входному элементу.
Я создал каналы, и каналы работают, когда я их добавляю (см. reverseStr
):
<input type="text"
#formItem
[name]="id"
[id]="id"
class="form-control"
[ngModel]="value | reverseStr"
(blur)="change.emit(formItem.value)"/>
Но как я могу добавить каналы условно в Angular?
I знаю, что это возможно в HTML, добавив что-то вроде:
[ngModel]="styles.includes('ReverseString') ? (value | SomePipe) : (value | pipe2)"
Но это не самый элегантный способ, который я думаю, и если у меня есть несколько компонентов ввода, мне нужно менять его каждый раз
Я создал такую функцию, как:
addPipe() {
const mapping: any = {
ReverseString: 'reverseStr',
LowerCase: 'lowerCase',
UpperCase: 'upperCase',
};
this.styles.forEach((style : any) => {
const pipes = mapping[style];
if (pipes) {
// How can I add the pipes now dynamically?
}
});
}
Но я не знаю, как динамически добавить канал в поле ввода.
Как добавить трубы условно и динамически в Angular?