簡體   English   中英

Angular2 RC5沒有ViewResolver

[英]Angular2 RC5 No ViewResolver

我正在將我的angular2項目更新為rc5。 我有一個Html解析器。 它工作得很好,我更新到rc5。 我的問題是在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;
    }

}

謝謝你的幫助

如果您只想從元數據修改“templateUrl”。

您可以創建一個動態代理來攔截“UrlResolver”的“resolve”方法:

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(); 在bootstrap根模塊之前。

看這里的演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM