Родитель компонент:
<title-subtitle [childInput]="parentInput">
</title-subtitle>
private parentInput: any;
ngOnInit() {
this.parentInput = 'Hello World';
}
Детский компонент:
import { Component, Input, OnChanges, OnInit } from '@angular/core';
export class ChildComponent implements OnChanges, OnInit {
@Input() private childInput: any;
ngOnInit() {
// When the data is passed instantly, you can access it here.
// You can also use {{childInput}} in your HTML
console.log(this.childInput);
}
ngOnChanges(changes) {
// When the data is async : get the changes when they are ready
// Get @Input data when it's ready
if (changes.childInput) {
console.log(changes.childInput.currentValue);
}
}
}
Обратите внимание на именование свойств в родительском HTML.
N.B: Вам нужны только события OnInit и/или OnChanges, когда вам действительно нужно что-то делать с вашими данными (т. Е. Глубокое клонирование, ...). Если вы только отображаете его в своем HTML с интерполяцией, нет необходимости в событиях.
NB 2: Имейте в виде, что это ЖЕ ПРЕДМЕТ (тот же ссылка), который посылается ваш ребенок, что означает, что при обновлении свойства вашего объекта в вашем ChildComponent, изменения будут также влиять на родителях , Обычно вы клонируете свой объект, чтобы избежать такого поведения в событиях OnInit или OnChanges.
проверить это живой plnk. это может помочь вам http://plnkr.co/edit/LEtEN9?p=preview –
Это точно мой ответ tho: p. Чтобы быть конкретным, вы не можете просто передать строковый аргумент, как хотите. Вы можете использовать связь «От родителя к ребенку» от Angular2, которая использует «@ Input», где вы можете отправить «Объект» с его свойствами. –