как передать данные Dynami c от родителя к потомку в angular2 + - PullRequest
0 голосов
/ 20 июня 2020

Как мы знаем, в angular связь между родителем и потомком происходила с использованием декоратора @Input, но как передавать динамические c данные от родителя к потомку. Например, свойство 'name' определено в родительском элементе, и его значение изменяется динамически и обновленное значение name, которое мы собираемся использовать в дочернем компоненте, чтобы добиться этого без сервисов.

Ответы [ 2 ]

0 голосов
/ 20 июня 2020

Вы можете использовать службу для получения обновленного значения в дочернем элементе, когда оно изменяется в родительском.

Для этого вам необходимо объявить переменную в службе типа наблюдаемый. ваш myService.service.ts будет иметь следующий код:

@Injectable()
export class myService {
myInput:BehaviorSubject<boolean> = new BehaviorSubject(false)
 }

теперь из вашего родительского компонента измените значение этого myInput, используя:

myServie.myInput.next(true)

и подпишитесь на эту переменную в своем дочернем компоненте, используя:

 myService.myInput.subscribe((data)=>{console.log(data)})

Как в родительском, так и в дочернем компонентах добавьте строку private mySerivce:MyService в аргументы конструктора.

0 голосов
/ 20 июня 2020

вы можете наблюдать за изменениями ввода в дочернем компоненте с помощью жизненного цикла ngOnChanges

в дочернем компоненте вы должны implements OnChanges

ngOnChanges(changes: SimpleChanges): void {
    for (let propName in changes) {
      let change = changes[propName];
      if (propName === "YOUR_INPUT_NAME") {
        this.YOUR_INPUT_NAME = (change.currentValue);
      }
    }
  }
...