0

angular2-meteor を使用しています。

2 つのコンポーネント間で値を渡そうとすると (最初のコンポーネントで値が変更され、2 番目のコンポーネントでイベントを作成し、この新しい値を使用する場合)、現在 2 つの方法があります。

  1. 1 つの方法は流星の方法です: と を使用this.autorunSession.getます。
  2. もう 1 つの方法は angular2 の方法InjectableですEventEmitter

どっちが優先?それとも他に良い方法はありますか?ありがとう

4

2 に答える 2

0

今、私はangular2-meteorをしばらく使用しました。

angular2-meteor チュートリアルには、Angular 2 サービスまたはMeteor Sessionの使用または選択に関する例はこれまでありません。

しかし、 Angular 2がフロントエンドで主導権を握っているように感じますが、 meteorは反応性を容易にし、すべてのバックエンドの処理も行います。

そこで、サービスを使用してコンポーネント間で共有するAngular2の方法を使用しました。そして、@todd-w-crone が言ったように、サービスは非常に強力です。

誰かがより良い答えを持っている場合は、それを受け入れるように切り替えます。

于 2016-02-28T03:11:34.260 に答える
0

App.states.tsグローバルにアクセスされ、Session (get / set) を模倣するという新しいサービスを作成することが実用的だと思います。通常、このサービスを必要なすべてのコンポーネントにインポートして、User.status 、 company.profile 、 lastProductなどの新しい値を取得または設定します。

このサービスは@injectable、値がまだ設定されていない場合に備えて、他のサービスを利用することもできます。これにより、コンポーネントappState.getLastModifiedItem()で変数を要求できます。次に、app.states.tsこの関数を記述して渡すthis.modifiedItemか、次のいずれかを行います。

  • item.service.tsデータを取得する別のサービスをリクエストする
  • で別の関数を呼び出しitemCollection.findOne({...})、そのような値を返します。

必要に応じて Mongo クエリを構成し、静的データをappStateappState に保存するか、サブスクリプション アイテムを保持することができます。

コンポーネント内の @injectable によって処理されるすべてのサブスクリプションは、そのようなコンポーネントによってインポートされることを考慮してください。コンポーネント/サービス間のサブスクリプションの競合に注意してください。

于 2017-04-12T17:57:42.597 に答える