Как вы используете переменную @input в угловой связи между родителями и дочерними элементами

#angular

#угловой

Вопрос:

Как использовать переменные, украшенные @ input, в дочерних компонентах при обмене данными между родительским и дочерним компонентами angular? Например, следующий код:

 @input str : string;
 

Затем я могу использовать ее в функции ngoninit():

 ngOnInit(): void {
console.log ("str is:",  this.str );
}
 

Он работает нормально, и я могу видеть содержимое в консоли.
Но если я хочу использовать эту переменную в другом месте в этом классе, например, в следующих функциях:

 private _ str : string;
strVal(){
this._ str= this.str ;
console.log ( str is:", this._ str);
}
 

Он может быть скомпилирован, но в консоли есть ошибка, а запрос «не определен».

Как решить подобные проблемы? Спасибо.

Комментарии:

1. почему присваивается то же значение другой переменной? также, когда вызывается функция strVal() ?

2. Я только что добавил ngOnchnages, чтобы получить новое значение вашего значения @Input

Ответ №1:

Вы должны использовать () для Input . Пример:

 @Input() data: string
 

Ответ №2:

Попробуйте написать @Input() str: string;

Также убедитесь, что функция strVal(); вызвана.

Простой способ проверить это — вызвать функцию в ngOnInit()

 ngOnInit(): void {
this.strVal();
}
 

Ответ №3:

Во-первых, чтобы избежать undefined проблемы, вы можете начать с присвоения вашему input значению по умолчанию.

 @Input()
str = 'default'; // Or you can just let it empty '' 
 

Почему у вас возникает undefined . В вашем коде я вижу

 console.log ( str is:", this._ str); // There is a " missing here
console.log ( "str is:", this._ str); // I think the undefined you are having,
// is not about the str input but about the "str" in this line where " was missing (str is:")