2017-02-28 5 views
0

templateUrlifelseに依存させることが可能かどうか疑問に思っています。変更可能なテンプレートURLがあります

import { Component } from "@angular/core"; 

@Component({ 
    selector: "grote-kerk", 
    templateUrl: "pages/home/home.html" 
}) 
export class AppComponent { 
    // Your TypeScript logic goes here 
} 
+0

http://stackoverflow.com/questions/31692416/dynamic-template-urls-in-angular-2 –

答えて

1

別にコメントで提供の提案から、あなたはまた、独自の構造的なディレクティブをクレタ島と異なるレイアウトをロード/アンロードするための条件に基づくことができます。

import { Component, Directive, ViewContainerRef, TemplateRef, Inject } from "@angular/core"; 
import { Device, platformNames } from "platform"; 
import { DEVICE } from "nativescript-angular/platform-providers"; 

@Directive({ selector: "[sdkIfAndroid]" }) 
export class IfAndroidDirective { 
    constructor(@Inject(DEVICE) device: Device, container: ViewContainerRef, templateRef: TemplateRef<Object>) { 
     if (device.os === platformNames.android) { 
      container.createEmbeddedView(templateRef); 
     } 
    } 
} 

@Directive({ selector: "[sdkIfIos]" }) 
export class IfIosDirective { 
    constructor(@Inject(DEVICE) device: Device, container: ViewContainerRef, templateRef: TemplateRef<Object>) { 
     if (device.os === platformNames.ios) { 
      container.createEmbeddedView(templateRef); 
     } 
    } 
} 

@Component({ 
    moduleId: module.id, 
    templateUrl: "./create-custom-directive.component.html", 
}) 
export class CreateCustomDirectiveExampleComponent { 
} 

そして、ディレクティブが使用されているHTML部分: は、例えばcontionは、デバイスがiOS版やAndroid 1かどうかをチェックし、OSに応じて、異なるレイアウトをロードして、このサンプルを見てみましょう

<GridLayout *sdkIfAndroid width="300" height="300" backgroundColor="#a4c639"></GridLayout> 
<GridLayout *sdkIfIos width="300" height="300" backgroundColor="#0099CC"></GridLayout> 

全例を見つけることができるhere

関連する問題