とTypescript
を使用しています。Angular 2
と互換性があるようにコードを準備しています。多くのコンポーネントが、アプリケーション全体のリポジトリロケーションを、templateUrl
プロパティにマップされたビューに使用する必要がある状況がありますが、時にはビューには特定のローカル実装が必要です。角度1.5+のコンポーネント - templateUrl関数の内部でのバインディングを使用
通常、ビューは高速配信のCDNでホストされ、同じ一般的なコードベース、APIなどに属する複数のサイト間で再利用されます。繰り返す必要のないものを集中化する。
まれに、この動作を無効にして、より細かく微調整したビューを使用する必要があります。そこで私のアプローチはbinding
をviewLocation
というコンポーネントに追加して、このように使用することを意図していました。
<component-name></component-name>
がデフォルトです。この場合、デフォルトのCDNパスが使用されます。 <component-name view-location="local"></component-name>
は固有の状況です。この場合、templateUrl
はそれに応答し、CDNからではなく特定のアプリケーションに関連するパスに切り替えることができます。
ここで実証されているように、実際のコンストラクタまたはtemplateUrl
関数内のバインディングプロパティにアクセスできないことがわかってから、かなり簡単になると思いました。
export class SidebarComponent extends Component {
constructor() {
super();
this.bindings = { viewLocation: '=' };
// other properties
this.templateUrl = ($someService: IServiceInterface): string => {
// help! I don't have access to the viewLocation property!
}
}
}
そのプロパティにアクセスするために他に何かできますか?
やりたいことはできないと思いますが、他の方法でも可能です。 http://stackoverflow.c om/questions/23065165/angularjs-directive-dynamic-templates – BotanMan
ありがとうございました。私はそれを確認します。私はあなたがおそらくこの段階でバインディングにアクセスすることはできません少しflabberghasteです。これは、コンポーネントシステム全体のかなり致命的な欠陥のようです。 – Ciel
残念ながら、私があなたに与えたリンクはうまくいかないと思います。この段階では、コンポーネントのHTML要素にはアクセスできません。 – Ciel