2016-09-23 1 views
4

Пробовал модифицировать душу from here. Он отлично работает, но если вы измените шаблон на templateUrl в компоненте, который должен динамически загружаться, вы получите сообщение об ошибке: «Никакая реализация ResourceLoader не была предоставлена. Невозможно прочитать url ...».Ошибка «Не удается прочитать url» для динамических компонентов углового2 с шаблономUrl

@Component({ 
    selector: 'string-editor', 
    templateUrl: 'app/parts/string.html', //using template URL instead of inline template here 
}) 
export class StringEditor { ... } 

Живой пример на plunker. Любые идеи, как это исправить?

+1

Вы получили что-нибудь с этим? Я столкнулся с той же проблемой. –

+0

Возможно, вы используете 'COMPILER_PROVIDERS', который имеет строку:' {предоставить: ResourceLoader, useValue: _NO_RESOURCE_LOADER} '. [Источник] (https://github.com/angular/angular/blob/master/modules/@angular/compiler/src/compiler.ts#L58) – cy3er

+1

@FergalMoran см. Ответ ниже. – Max

ответ

3

Не используйте COMPILER_PROVIDERS, так как он отменяет ResourceLoader.

Для динамического использования нагружения Compiler от основного пакета (который на самом деле такой же, как RuntimeCompiler):

@Inject(Compiler) protected compiler: Compiler 

и добавить ApplicationModule как импорт в модуле:

imports: [ 
    ApplicationModule, 
    BrowserModule, 
    DynamicModule.forRoot() // singletons 
], 

Plunker

+0

Спасибо, это работает. Я решил это, выполнив пользовательский загрузчик ресурсов и переопределив _NO_RESOURCE_LOADER, как это, -> провайдеры: [COMPILER_PROVIDERS, {обеспечить: ResourceLoader, useValue: CustomResourceLoader}], но ваше решение явно более правильное. – Max

+0

Это не работает для меня, можете ли вы, пожалуйста, помочь мне в этом случае, как вы ее разрешаете? –

+1

Как определить «CustomResourceLoader»? –

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

  • Нет связанных вопросов^_^