나의 교육 경험은 다음과 같습니다:
으아악다음 구성 요소는
으아악매개변수에서 얻은 데이터를 표시하는 논리는 다음과 같습니다.
으아악저는 업데이트를 처리하기 위해 맞춤 이벤트를 사용합니다
으아악
그런 다음 데이터를 조작하기 위한 다음 HTML이 있습니다.
으아악그러나 필드의 업데이트된 데이터[value]="loadedEducation.school" (updatedValue)="loadedEducation.school = $event"
는 하위 구성 요소에 바인딩되지 않으므로 새로 고치고 데이터베이스에서 데이터를 가져올 때까지 아무것도 표시되지 않습니다.
어떤 가능성을 구현해 볼 수 있나요?
ngOnChanges를 구현하려고 시도했지만 성공하지 못했습니다.
P粉6589549142024-03-22 14:12:38
목록에 있는 항목의 속성을 변경해도 로드된 교육 목록은 변경되지 않습니다. 목록을 새로 고치거나(this.loadedEducations = returnedEducations
) 프로젝트에서 상태 관리를 사용해 보세요
P粉0227236062024-03-22 13:08:51
문제의 근본 원인은 @Input()
无法检测到对象和数组内部的更改,因为它们都是 引用类型。您的 education
属性是一个对象,因此在父组件中进行的直接改变属性的更改(例如 education.school = 'newValue'
)不会触发子组件的属性 @Input() education
이 문제를 해결하는 방법에는 여러 가지가 있으며 각 방법에는 장단점이 있습니다.
parent.component.ts
parent.component.html
child.component.ts
장점:
단점:
@Input
Education
parent.component.ts
으아아아
딥 클론< /a>
parent.component.html
으아아아
child.component.ts
으아아아
장점:
Education
하위 구성 요소에 변경 사항을
updateEducation()
BehaviorSubject
으아아아
parent.component.ts
으아아아
parent.component.html
으아아아
child.component.ts
으아아아
child.component.html
단점: educationSubject
서비스에 넣고 동일한 서비스를 필요한 모든 구성 요소에 주입할 수 있습니다.
전송
updateEducation()
스트림을 통해서만 변경, 구독 취소를 피해야 하는 필요성(| async