Если вы сталкиваетесь с этим при отладке в Visual Studio, убедитесь, что путь сборки проекта указывает на локальный диск или выполните эти шаги , чтобы предоставить разрешения для сетевой папки.
Использование внешнего URL-адреса в templateURL не поддерживается (возможно, потому, что оно подвергает вас рискам безопасности). В качестве обходного пути вы можете использовать шаблон с вашим компонентом, который связывается и отображает одну переменную. Затем вы можете установить переменную, равную html, которую вы хотите отобразить. Пожалуйста, проверьте эти два похожих вопроса SO:
Я считаю, что все templateUrl относятся к корню вашего приложения, поэтому я не думаю, что это сработает.
Я закончил работу с scrape, чтобы получить новые html-файлы, а затем добавил команду serveride в мой файл index.html, чтобы добавить их.
import { Directive, ElementRef, Input, OnInit } from '@angular/core';
import { Headers, Http, Response } from '@angular/http';
@Directive({ selector: 'ngInclude' })
export class NgIncludeDirective implements 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() {
//Loads the HTML and bind it to the view
this.
http.
get(this.templateUrl).
map(res => this.parseTemplate(res)).
catch(this.handleTempalteError.bind(this)).subscribe(res => {
console.log(res);
});
}
}