2016-08-24 78 views
3

我正在更新我的angular2项目到rc5。我有一个Html解析器。它工作得很好,我更新到rc5。我的问题是“ViewResolver”在rc5中被删除。我有什么选择,解析器工作?Angular2 RC5没有ViewResolver

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; 
    } 

} 

感谢您的帮助

+0

没人能帮助我吗?我使用这个Resolver来问我的服务器的移动页面。 – Lyror

回答

0

,如果你只是想从元数据修改 “templateUrl”。

你可以创建一个动态代理拦截“UrlResolver”的“决心”的方法:

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

这似乎并没有拦截我的网址。你能分享一些例子吗? –

+0

增加了一个演示,试试吧〜 –