2016-08-24 3 views
3

Я обновляю свой проект angular2 до rc5. У меня есть Html Resolver. Он работал отлично, я обновился до rc5. Моя проблема в том, что «ViewResolver» был удален в rc5. Какой вариант у меня есть, что работает резольвер?Angular2 RC5 No 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

, похоже, это не перехватывает URL-адреса для меня. можете ли вы поделиться некоторым примером, пожалуйста? –

+0

добавили демо, попробуйте ~ –

Смежные вопросы