如何检查templateUrl在angular2中是否有效?

时间:2017-07-03 11:48:11

标签: c# angular

我使用C#Helpers构建我的视图,angular2通过调用控制器并接收C#生成的视图的html来使用此视图。 但我的问题是当用户没有访问视图的权限并且控制器返回401 Unautorized时,当角度尝试模板加载并且组件保持断开时,这会产生错误,直到您清理缓存并使用有效授权重新加载。

任何想法如何在组件加载之前验证templateUrl?

1 个答案:

答案 0 :(得分:0)

我解决了我的问题,即创建一个在templateUrl上调用的函数并返回正确的字符串url。



function hasTemplate(template: string) {
    var http = new XMLHttpRequest();
    http.open('GET', template, false);
    http.send();
    return (http.status === 200) ? template : '/view/home/error/';
}

export const getViewUrl = <TModel>(modelo: { new (): TModel }, tipo: string) => {
    //Url to call web service and verify the response
    let url = `/view/${modelo.name.toLowerCase()}/${tipo}`;
    return hasTemplate(url);
};

@Component({
    selector: 'cidade-list',
    templateUrl: getViewUrl(Cidade, 'list'),
    styleUrls: [CssPath],
    providers: [
        CidadeService,
    ]
})

export class CidadeListComponent {}
&#13;
&#13;
&#13;