web-dev-qa-db-ja.com

Angularコンポーネント:テンプレート置換オプションはありませんか?

新しい AngularJS 1.5 コンポーネントの概念(ディレクティブの場合と同様)には「置換」オプションがないように見えます。

table row<TR>コンポーネントとしての要素?有効なHTMLの観点から不可能ですか?

実際の例:mailBoxコンポーネントにはメールコンポーネントが含まれています。マークアップでは、mail-box-componentはテーブルであり、mail-boxはtrです。

<mail-box>
    <mail ng-repeat="mail in $ctrl.mails" mail="mail"></mail>
<mail-box>

[〜#〜] upd [〜#〜]:ディレクティブに関する関連議論- AngularJSで非推奨になった理由は?

47
Stepan Suvorov

Replace:trueフラグが非推奨になったため、これはもはや角度方向では不可能です。

AngularJSでreplaceが非推奨になった理由

置き換え:真のフラグはソリューションよりも多くの問題を抱えていたため、削除されました。したがって、このような方法でディレクティブを作成することはできず、有効なtable-tr-tdマークアップを提供できません。

ただし、これが見た目ほど悪くない理由は2つあります。

  1. あなたは、div、spanなどの要素とその上のいくつかのCSSを使用して、table、tr、tdなどなしでやりたいことをすべて行うことができます

  2. webコンポーネント(およびディレクティブはそれらをシミュレートする最初の試みでした)は、マークアップのそのような小さな断片を表すことを意図していません。それらは、実際に何かをする完全に機能するコンポーネントと考えられています。そのため、trでやりたいことは何でも、その周りに要素ディレクティブを構築する価値があると思う場合は、おそらくそうではありません。

たぶん、あなたができることは代わりに属性ディレクティブを使用することです:

<tr my-mail-directive></tr>

そして、あなたのmy-mail-directiveはtr要素に魔法をかけます

23