私は角成分を有し、第1成分は指令として第2成分を使用する。 同じモデルオブジェクトを共有する必要があります。これは最初のコンポーネントで初期化されます。 そのモデルを2番目のコンポーネントに渡すにはどうすればよいですか?Angular 2でオブジェクト間でオブジェクトを渡す方法は?
答えて
コンポーネント2では、ディレクティブコンポーネントは入力プロパティ(Typescriptの@input
注釈)を定義できます。また、コンポーネント1はそのプロパティをテンプレートからのディレクティブコンポーネントに渡すことができます。
が、これはSO How to do inter communication between a master and detail component in Angular2?
とどのように入力が子コンポーネントに渡されているにお答えください。あなたの場合、それは指示です。親から子への結合一方向データについて
親子でないコンポーネントでも使用できますか?たとえば、
@ EgorkZeこれを実現するには、共有しているオブジェクトが、その2つのコンポーネントの共通の親になければなりません。あなたが記述したものである兄弟コンポーネント間でオブジェクトを共有する方法は他にありません。 –
、子コンポーネント
@Input() model: any; // instead of any, specify your type
の入力プロパティを指定し、内結合テンプレートプロパティを使用する(スタイルガイドによってrecommendedとして)@Input
デコレータを使用親テンプレート
<child [model]="parentModel"></child>
オブジェクト(JavaScriptの参照タイプ)を使用すると、他のコンポーネントに反映される親または子コンポーネントのプロパティオブジェクトに加えた変更を渡しているので、B以来o番目のコンポーネントは同じオブジェクトへの参照を持ちます。私はこれをPlunkerに示します。
ます(変化検出の一環として、自動的に)子コンポーネントへの新しいオブジェクト参照を伝播します
this.model = someNewModel;
角度親コンポーネント内のオブジェクトを再割り当てした場合。
唯一行うべきことは、オブジェクトを子コンポーネントに再割り当てすることです。これを行うと、親は引き続き元のオブジェクトを参照します。 (双方向データバインディングが必要な場合は、https://stackoverflow.com/a/34616530/215945を参照してください)。
@Component({
selector: 'child',
template: `<h3>child</h3>
<div>{{model.prop1}}</div>
<button (click)="updateModel()">update model</button>`
})
class Child {
@Input() model: any; // instead of any, specify your type
updateModel() {
this.model.prop1 += ' child';
}
}
@Component({
selector: 'my-app',
directives: [Child],
template: `
<h3>Parent</h3>
<div>{{parentModel.prop1}}</div>
<button (click)="updateModel()">update model</button>
<child [model]="parentModel"></child>`
})
export class AppComponent {
parentModel = { prop1: '1st prop', prop2: '2nd prop' };
constructor() {}
updateModel() { this.parentModel.prop1 += ' parent'; }
}
Plunker - 角度RC.2
あなたは神の仕事をしています! 兄弟コンポーネントのアドバイスはありますか? 私の場合は、ルートレベルで2つのブートストラップがあります。 HeaderComponentには、本体内のコンポーネントと共有したい検索入力があります。 –
@SonicSoul、データを親のJavaScript参照型に入れるか、親を共有しない場合はデータを共有サービス。サービスアプローチについては、JavaScriptリファレンスタイプまたは[observablesを使用する](https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#bidirectional-service)を再度使用できます。 –
ありがとう!私はサービスルートをしようとしています実際にそれにObservableを置くことを考えていなかった –
あなたもセッターとサービスにデータを格納し、ゲッターの上にそれを得ることができ、出力注釈
@Directive({
selector: 'interval-dir',
})
class IntervalDir {
@Output() everySecond = new EventEmitter();
@Output('everyFiveSeconds') five5Secs = new EventEmitter();
constructor() {
setInterval(() => this.everySecond.emit("event"), 1000);
setInterval(() => this.five5Secs.emit("event"), 5000);
}
}
@Component({
selector: 'app',
template: `
<interval-dir (everySecond)="everySecond()" (everyFiveSeconds)="everyFiveSeconds()">
</interval-dir>
`,
directives: [IntervalDir]
})
class App {
everySecond() { console.log('second'); }
everyFiveSeconds() { console.log('five seconds'); }
}
bootstrap(App);
を使用します
import { Injectable } from '@angular/core';
@Injectable()
export class StorageService {
public scope: Array<any> | boolean = false;
constructor() {
}
public getScope(): Array<any> | boolean {
return this.scope;
}
public setScope(scope: any): void {
this.scope = scope;
}
}
あなたの答えは短すぎますが、親子コンポーネントがない場合は正しいです。 –
これは素晴らしい考えです。私はこの答えを見つけてとてもうれしいです。オブジェクトがページ全体の多くのコンポーネントでほぼ全世界で使用されていることがわかっているのは特に良いことです。 – Gherman
- 1. spring mvcで2つのコントローラ間でオブジェクトを渡す方法は?
- 2. Angularでオブジェクトを渡す
- 3. pythonインスタンス間でオブジェクトを渡す方法
- 4. JSONオブジェクトをAngular 2コンポーネントに渡す
- 5. フラグメント間でオブジェクトを渡す
- 6. オブジェクト間でデータを渡す#
- 7. クラス間でオブジェクトを渡す
- 8. Angularオブジェクトをpug mixinに渡すには?
- 9. Angular 2 Updating Arrayオブジェクト
- 10. event.targetをAngular 2のオブジェクトとして取得する方法は?
- 11. AngularフロントエンドからC#バックエンドへオブジェクトの配列を渡す方法
- 12. JavaFXのウィンドウ間でオブジェクトを渡す方法
- 13. 異なるコンポーネント間でMediaPlayerオブジェクトを渡す方法
- 14. grailのコントローラアクション間でオブジェクトを渡す最も良い方法
- 15. モジュール間でオブジェクトを渡す方法の代替
- 16. Angular 2の2つのオブジェクトでJSON webserviceから値を取得する方法
- 17. エクスプレスアプリでハンドルバービューにオブジェクトを渡す方法
- 18. HTTPURLConnectionでJSONオブジェクトを渡す方法
- 19. アングル2共有サービスの渡し方オブジェクト
- 20. Angular 2 JSONオブジェクトを表示
- 21. htmlテンプレート内のオブジェクトの配列をAngular 2で表示する方法は?
- 22. 2つのクラスメソッド間でNSStringオブジェクトを渡す
- 23. 2つのテーブルビューコントローラの間で番号オブジェクトを渡す:IOS
- 24. 2つのAround関数間でオブジェクトを渡す - AOP
- 25. cythonで別のオブジェクトのメソッドにC++オブジェクトを渡す方法
- 26. JSONからAngular 2 Arrayオブジェクトを選択する方法
- 27. JSF2.0マネージドBean間で値オブジェクトを渡す
- 28. ビュー間でオブジェクトを渡す(フラッシュメッセージ)
- 29. C++クラス間でオブジェクトを渡す
- 30. エンドポイント間でラクダを渡すオブジェクト
コードを投稿できますか?一般的に、ng2では、この種のテンプレートのローカル変数を使用しますが、少し詳しく説明しなくても言い難いです。 – jlew
この回答が参考になった:http://stackoverflow.com/a/31037168/1341825 – theUtherSide