2016-04-06 3 views
1

Angular 2コンポーネントでPolymerを使用しようとしています。静的な値をPolymerに渡すと、それが表示されますが、Angular 2に変数をバインドしてPolymerコンポーネントにバインドしようとすると、それは通らなくなります。 Polymerはデフォルト値を取得して正常に動作しますが、Angularの値は表示されません。私が何を読んでから、Angular 2からPolymer 1.0にプロパティを渡す

http://plnkr.co/edit/FU5cWuuc7vIz8lvtPwuC?p=preview

、私はこの構文で角度2値をバインドすることができるはずです::この動作のA Plunkerはこちら

<polymer-component [(polymer-property)]="angular2Varialbe"></polymer-component> 

ありませんどこに間違っているのか確かめてください。しかし、どんな助けもありがとう!

答えて

3

角度のドキュメント状態:

「角2の世界では、属性の唯一の役割は にある要素とディレクティブの状態を初期化し、我々のデータバインド、我々は 要素で独占的に扱っているとき。 プロパティーとイベント 属性は事実上消えます。

したがって、バインディングを有効にする正しい方法は、[(userName)]で、[(user-name)]ではなく書き込むことです。

これは「うまくいく」ように見えますが、Angular to Polymerからのみで、それ以外の方法ではありません。 Webコンポーネントの変更を視覚障害者にする

私は(私は定型化に貢献、彼らは統合が容易になります願っています)のドキュメントに記載された方法を用いて結合双方向のデータを使用してコードを使用する例を作った:

<hello-name [userName]="userName" (user-name-changed)="userName=$event.target.userName" id="hero"></hello-name> 

http://plnkr.co/edit/dwd1x3o6RgyOxwNjyIBx?p=preview

例では

、私はwebcomponentプロパティを変更するボタンを追加しました、そしてあなたは、ID "hero"を変更した場合、それは、また、角度のモデルを更新する方法を確認することができます。

let element = document.getElementById("hero"); 

let element = document.getElementById("hero0"); 

あなたは定型文が必要とされているか確認することができます。この場合、ノードには(user-name-changed)="userName=$event.target.userName"がありません。ちょうど[(userName)]="userName"です。javascriptを使用してWebコンポーネントのプロパティを更新すると、角度コンテキストは決して更新されません。

+0

これはまさに正しい解決策です。あなたのプランカーは、1つの方法と2つの方法のバインディングシナリオを説明する素晴らしい仕事をしました!お手伝いありがとう! –