2017-02-14 23 views
1

外部HTMLファイルを含める方法はありますか?templateUrlを使用できませんでした。angular2には外部HTMLテンプレートが含まれています

@Component({ 
    selector: 'enroll-header', 
    templateUrl: 'http://blank.blank.com/somecool.html' 
}) 

それは"./http://blank.blank.com/somecool.html"

でそれを見つけようと

+0

を実装docs/ts/latest/cookbook/dynamic-component-loader.html)には、plnkrおよびダウンロード可能なコードへのリンクが含まれています。 – ccpizza

答えて

3

templateURLで外部URLを使用することはサポートされていません(セキュリティリスクにさらされる可能性があるため)。回避策として、単一の変数にバインドして表示するコンポーネントでテンプレートを使用できます。次に、変数をレンダリングするhtmlと等しく設定できます。これら2つの同様のSOの質問を確認してください:

2

に失敗し、私はtemplateUrlのすべては、あなたのアプリケーションのルートに相対的なものと考えているので、私はこれがうまくいくとは思いませんよ。

0

私は新しいhtmlファイルを取得するためにこすりジョブを使用して終了した後、サーバー側が私のインデックスにコマンドを含めるaddded。 htmlファイルを追加します。

0

'@ angular/core'の{Directive、ElementRef、Input、OnInit}をインポートします。 '@ angular/http'から{Headers、Http、Response}をインポートします。

@Directive({セレクタ 'ngInclude'}) エクスポートクラスNgIncludeDirectiveあなたは、[ComponentFactoryResolver(https://angular.io/を探しているかもしれないのOnInit {

@Input('src') 
private templateUrl: string; 
@Input('type') 
private type: string; 

constructor(private element: ElementRef, private http: Http) { 

} 
parseTemplate(res: Response) { 
    if (this.type == 'template') { 
     this.element.nativeElement.innerHTML = res.text(); 
    } else if (this.type == 'style') { 
     var head = document.head || document.getElementsByTagName('head')[0]; 
     var style = document.createElement('style'); 
     style.type = 'text/css'; 
     style.appendChild(document.createTextNode(res.text())); 
     head.appendChild(style); 
    } 
} 
handleTempalteError(err) { 

} 
ngOnInit() { 
    this. 
     http. 
     get(this.templateUrl). 
     map(res => this.parseTemplate(res)). 
     catch(this.handleTempalteError.bind(this)).subscribe(res => { 
      console.log(res); 
     }); 
} 

}

関連する問題