私の学歴は次のとおりです:
リーリーおよび次のコンポーネント
リーリーパラメータから取得したデータを表示するための次のロジックがあります:
リーリーカスタム イベントを使用して更新を処理します
リーリー
データを操作するための次の HTML があります:
リーリーただし、フィールド [value]="loadedEducation.school" (updatedValue)="loadedEducation.school = $event"
の更新されたデータは子コンポーネントにバインドされないため、更新後はデータベースからデータを取得していない場合は、前に表示されます。
どのような可能性を実装できるでしょうか?
ngOnChanges を実装しようとしましたが、成功しませんでした。
P粉6589549142024-03-22 14:12:38
loadedEducations リストは、リスト内の項目のプロパティを変更しても変更されません。リストを更新してみるか (this.loadedEducations = returnsEducations
)、プロジェクトで状態管理
P粉0227236062024-03-22 13:08:51
問題の根本原因は、@Input()
がオブジェクトと配列の内部の変更を検出できないことです。これらは両方とも 参照型 であるためです。 education
プロパティはオブジェクトであるため、プロパティを直接変更する親コンポーネントでの変更 (例: education.school = 'newValue'
) は、子コンポーネントのプロパティをトリガーしません# Any ##@Input() 教育への変更
parent.component.ts
リーリー
parent.component.html
リーリー
child.component.ts
リーリー
######アドバンテージ:######
シンプルで直感的に使用でき、「通常通り」動作します 変更を子コンポーネントに送信するための追加のボイラープレートは必要ありません
@Input の数が増えると、扱いにくくなります
親コンポーネントと子コンポーネント間のセマンティックな結合が失われ、実際には共有インターフェイス (つまり、
parent.component.tsparent.component.html
リーリー
child.component.ts< /a> リーリー ######アドバンテージ:######
Education
インターフェイスの使用を維持して、親コンポーネントと子コンポーネント間のセマンティック結合を維持します
不変オブジェクトの使用を奨励するこれはオブジェクトの一般的な推奨事項です
欠点:
parent.component.ts リーリー
child.component.ts
リーリー
######アドバンテージ:######
educationSubject
をサービスに配置し、それを必要とするコンポーネントに同じサービスを挿入するなど、多くのコンポーネントを使用するように簡単に拡張できます。
不変オブジェクトの使用を推奨します
サブコンポーネントへの変更を受信します
欠点:
関数を作成します。
リアクティブ コードを使用する場合の一般的な制限 (ストリーム経由でのみ変更する、サブスクリプション解除を回避する必要がある (