私はRC4以前のバージョン用に開発されたionic2-autocompleteのIonic 2コンポーネントを使用しています。それをAngular 2 finalに変換します。RC4より後のバージョン用の角度2のカスタムデコレータ「複数のコンポーネント」を除外
元のデザインの一部として、template
またはtemplateUrl
を受け取るカスタムデコレータAutoCompleteItem
を使用して、デフォルトのテンプレートを上書きするようにしました。 このデコレータのソースコードはhereです。
ご覧のとおり、デコレータを使用してコンポーネントに必要な属性の一部を保持し、ユーザーが必要に応じてコンポーネントを設計できるようにしました。以前のバージョンで完全に働いた
import {AutoCompleteItem, AutoCompleteItemComponent} from 'ionic2-auto-complete';
@AutoCompleteItem({
template : `<img src="build/images/flags/{{data.name}}.png" class="flag" /> <span [innerHTML]="data.name | boldprefix:keyword"></span>`,
})
export class CompTestItem extends AutoCompleteItemComponent{
}
は(私もdeclerations
にCompTestItem
を追加しました:
さて、私はドキュメントに書いた、まったく同じ手順に従って、私が使用してカスタムテンプレートを実装してみましたアレイ)。
しかし、いくつかの理由で、私は今、次の例外に遭遇:
polyfills.js:3 Unhandled Promise rejection: Template parse errors: More than one component: AutoCompleteItemComponent,CompTestItem ("
[ERROR ->] ; Task: Promise.then ; Value: Error: Template parse errors:(…) Error: Template parse errors: More than one component: AutoCompleteItemComponent,CompTestItem ("
[ERROR ->]http://localhost:8101/build/main.js:19480:19) at RuntimeCompiler._compileTemplate (http://localhost:8101/build/main.js:27855:51) at http://localhost:8101/build/main.js:27777:83 at Set.forEach (native) at compile (http://localhost:8101/build/main.js:27777:47) at t.invoke (http://localhost:8101/build/polyfills.js:3:13400) at e.run (http://localhost:8101/build/polyfills.js:3:10787) at http://localhost:8101/build/polyfills.js:3:8889 at t.invokeTask (http://localhost:8101/build/polyfills.js:3:14029) at e.runTask (http://localhost:8101/build/polyfills.js:3:11389)o @ polyfills.js:3r @ polyfills.js:3i @ polyfills.js:3 polyfills.js:3 Error: Uncaught (in promise): Error: Template parse errors:(…)o @ polyfills.js:3r @ polyfills.js:3i @ polyfills.js:3
を私は本当に手掛かり理由を持っていません。誰でもこのカスタムデコレータがこのバージョンのAngularで動作しない理由を知ることができますか? なぜ、私は複数のコンポーネントを持っていると言いますか?
ありがとうございます!
最後に物事を追加/削除して移動した後、問題は 'exports:[AutoCompleteItemComponent]'です。それがなぜ問題を引き起こすのか分かりませんが、モジュールがAngularに導入される前に問題ではなかったことは意味があります。溶液?あなたがそれを複数のモジュールを使用するためにエクスポートする必要があるので、わかりません。あなたがいつもそれを拡張しなければならない場合、それを宣言またはエクスポートする必要はありませんが、スタンドアロンでも使用できるコンポーネントのように見えます。 –
これについて考えると、本当の問題は同じセレクタを持つ複数のコンポーネントがある場合は、それを拡張します。 '[Error - >]'が何を指しているかのようです - Angularはどのコンポーネントを使うべきかを決めることはできません –
一時的な、しかし不安定な修正は、拡張クラスを使用するモジュールがオートコンプリートモジュールもインポートしないでください。これは競合を避けるかもしれない。 –