2016-08-24 65 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

增加了一個演示,試試吧〜 –

相關問題