Авто относится к компонентам в шаблоне? - PullRequest
0 голосов
/ 05 декабря 2018

Я занимаюсь разработкой веб-приложения с использованием Angular 6. Можно ли ссылаться на компонент (в данном случае мой custom-component), используемый в шаблоне, как в этом случае:

<custom-component #select
   name="name1"
   title="Select first option"
   [(ngModel)]="select.value"

>
</custom-component>

Как видите, свойство [(ngModel)] имеет значение select.value.Это значение является свойством CustomComponent (что я всегда должен быть подключен к ngModel).Чтобы сослаться на него, я использовал #select, но я хотел бы знать, есть ли другие способы или ключевые слова, которые позволяют мне использовать свойство value без использования декоратора #select при каждом использовании пользовательского компонента вшаблон.

1 Ответ

0 голосов
/ 05 декабря 2018

Вы можете использовать ngModel вместе с ControlValueAccessor для пользовательского компонента.

Внутри класса custom-componen расширить ControlValueAccessor

export class CustomComponent implements  , ControlValueAccessor { 

    onChange = (val: string) => { };
    onTouched = () => { }; 

    writeValue(val: string): void { 
       // value passed from parent throug ngModel will come under this funtion
    }

    registerOnChange(fn: (val: string) => void): void {
        this.onChange = fn;
    }

    registerOnTouched(fn: () => void): void {
        this.onTouched = fn;
    } 

    ngOnInit() {
    } 

    // If you want to emit value to parent use the onChange function
    myEmitFunction(){
        this.onChange("value u want to emit")
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...