У меня есть свойство @Input в моем дочернем компоненте типа Person, и я передаю объект из родительского компонента через атрибут
Полный рабочий код доступен в StackBlitz
Я исследовал следующий вопрос, и я понял, что то, что они сказали в ответе, но я попробовал Object.assign и другие вещи, основанные на ответе, но он не может загрузить данные в View.
Как я могу передать объект через @Input и как я могу сделать некоторые манипуляции после того, как объект достиг дочернего компонента иНужно обновить в представлении?
Пример кода:
Компонент приложения :
import { Component } from '@angular/core';
import { Person } from './models/person'
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
person: Person = {
firstName: 'Emma',
lastName: 'Watson'
};
}
Компонент приложения HTML :
<user [user-profile]="person"></user>
Компонент пользователя :
import { Component, OnInit, Input, OnChanges, SimpleChanges } from '@angular/core';
import { Person } from '../models/person';
@Component({
selector: 'user',
templateUrl: './user.component.html',
styleUrls: ['./user.component.css']
})
export class UserComponent implements OnInit, OnChanges {
@Input('user-profile') profile: Person;
person: Person;
constructor() {}
ngOnInit() {
this.person = {
firstName: '',
lastName: ''
}
}
ngOnChanges(changes:SimpleChanges): void {
if(typeof this.profile !== 'undefined'
&& typeof this.profile.firstName !== 'undefined'
&& typeof this.profile.lastName !== 'undefined') {
this.person.firstName = this.profile.firstName;
this.person.lastName = this.profile.lastName;
}
}
}
Компонент пользователя HTML :
Full Name: {{person.firstName}} {{person.lastName}}
Мне нужно сделатьнекоторые манипуляции, как только я получил объект от @Input
и нужно обновить его в пользовательском интерфейсе.Я знаю, что объект передается в качестве ссылки, но здесь я попытался с помощью Object.assign
и назначил свойство с помощью undefined
, а затем соответствующий объект ничего не работает.