首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular2 RC5 No ViewResolver

Angular2 RC5 No ViewResolver
EN

Stack Overflow用户
提问于 2016-08-24 15:48:21
回答 1查看 563关注 0票数 3

我正在将我的angular2项目更新到rc5。我有一个Html解析器。它工作得很好,我更新到了rc5。我的问题是rc5中的"ViewResolver“被删除了。我有什么选项可以让解析器正常工作?

代码语言:javascript
复制
import {Injectable, ComponentMetadata, ViewMetadata, Type} from '@angular/core';
import {Globalservice} from './Service/Globalservice';

export class AppResolver extends ViewResolver {
    resolve(component: Type): ViewMetadata {
        var view = super.resolve(component);

        if (view.templateUrl.trim().substring(view.templateUrl.lastIndexOf('.')+1).toUpperCase() == "HTML" && Globalservice.IsMobileDevice()) {

            var index = view.templateUrl.lastIndexOf('/') + 1;
            var newUrl: string = view.templateUrl.substr(0, index) + "m" + view.templateUrl.substr(index);

            view.templateUrl = newUrl;
        }
        return view;
    }

    doesFileExist(urlToFile): boolean {
        return false;
    }

}

感谢你的帮助

EN

回答 1

Stack Overflow用户

发布于 2016-09-20 15:44:20

如果您只想修改元数据中的"templateUrl“。

您可以创建一个动态代理来拦截UrlResolver的resolve方法:

代码语言:javascript
复制
import { UrlResolver } from '@angular/compiler';

export class MyUrlResolverInterceptor {

  static attach() {
    var proxied = UrlResolver.prototype.resolve;
    UrlResolver.prototype.resolve = (baseUrl: string, url: string): string => {
      var _url = doSomethingToMakeTheUrlYouWant(url);
      return proxied.bind(proxied)(baseUrl, _url);
    };
  };
}

并在引导根模块之前执行MyUrlResolverInterceptor.attach();

see demo here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39117363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档