Использование DirectiveResolver для изменения метаданных @Component

Мне интересно, как использовать DirectiveResolver объект, чтобы изменить данный Component,

Зависимости (ng2 движется так быстро, что в наши дни вещи быстро устаревают)

"@angular/common": "~2.4.3",
"@angular/compiler": "~2.4.3",
"@angular/core": "~2.4.3",

Я попробовал это:

import { Component } from '@wwwalkerrun/nativescript-ngx-magic';
import { OnInit, Directive, Type } from '@angular/core';
import { DirectiveResolver } from '@angular/compiler';


class myViewResolver extends DirectiveResolver {
    resolve(type: Type<any>, throwIfNotFound?: boolean): Directive {        
        var view = super.resolve(type, throwIfNotFound);
        console.log(type);
        console.log(view);
        return view;
    }
}

@Component({
  selector: 'app-root',
  templateUrl: 'views/app/app.component.html',
  styleUrls: ['views/app/app.component.css'],
  providers: [myViewResolver]
})
export class AppComponent {
  title = 'app works!';
}

Но я не получаю журналы, поэтому я подозреваю, что распознаватель не выполняется.

Любая идея?

PS: нет записи в официальной документации angular.io API...

1 ответ

Решение

Вам нужно передать дополнительных провайдеров, загрузив приложение для переопределения провайдеров компилятора по умолчанию.

Так что я думаю, что это должно сработать:

platformBrowserDynamic().bootstrapModule(AppModule, { 
  providers: [
    { provide: DirectiveResolver, useClass: myViewResolver } 
  ]
});

Пример плунжера

Другие вопросы по тегам