2017-12-19 10 views
1

AngularDart 4.0 main.dartのコンポーネント

bootstrap(FooComponent); 
bootstrap(BarComponent); 

component.dartファイル内

class FooComponent { 
    String content = "abc"; 
    void changeBarContent(){ 
    // change bar content here 
    } 
} 

class BarComponent { 
    String content = "efg"; 
} 

まず間で通信するためにどのように、私はFooComponent.content = "HIのようなmain.dartで設定されたコンテンツをしたいですメインから "。

第2に、BarComponentのコンテンツをFooComponentから設定する必要があります。

どうすればよいですか?

+0

2つのトップアングルアプリ(つまり、それぞれのブートストラップにあるもの)の間で通信したい場合は、ラッパーを使用してアプリを統合します。 Angularは、ブートストラップのアプリは主に独立していると仮定しています。ウィンドウ変数を使用して通信することはできますが、角度自体は通信できません。 –

+0

トップレベルのAppブートストラップと通信する場合、特定のコンポーネントにアクセスするために使用できるインスタンスフィールドを持つComponentRefが返されます。そこにコンポーネントのデータを設定することができますが、変更検出の外で作業していると思いますので、ChangeDetectorRefを使用して角度の変化があることを伝える必要があります。 –

答えて

0

これを単一のプロジェクトとしてコンパイルすると、ライブラリに表示されるすべてのグローバルオブジェクトを共有できます。

これは、両方のApps /コンポーネントがアクセスするライブラリ内の変数と同じくらいシンプルなものですが、テスト可能なものが必要な場合は、クラスを作成してコンポーネントのコンストラクタ内に注入し、どちらもブートストラップにあります。

0

また、両方のコンポーネントに注入される単純なシングルトンサービスを作成することもできます。 FooComponentはchangeBarContentメソッドを介してそのサービスの値を更新でき、BarComponentはそのサービスの値を参照できます。更新しようとしている値がプリミティブである場合は、その周りにラッパーオブジェクトを作成する必要があります。

私はAngularDartを初めて使うので、これはベストプラクティスだとは言えませんが、あなたがやろうとしていることを処理する方法があります。

関連する問題