если это обычный класс (не компонент или директива), вы не можете внедрить сервис KeyValueDiffers
, как мы делаем это на уровне компонентов или на уровне модуля.
1.) Вам нужно
добавьте @Injectable () к GsPoint и
предоставляет провайдерам, подобным GsPoint: [GsPoint] в компоненте или NgModule.
Когда вы затем внедряете GsPoint куда-то, экземпляр KeyValueDiffers передается в GsPoint, когда он создается DI (до того, как он вводится в первый раз).
2.) Альтернативный подход заключается в настройке специального инжектора, например
constructor(private injector:Injector) {
let resolvedProviders = ReflectiveInjector.resolve([KeyValueDiffers]);
let childInjector = ReflectiveInjector.fromResolvedProviders(resolvedProviders,this.injector);
let myDiffer : KeyValueDiffers= childInjector.get(KeyValueDiffers);
} * * тысяча двадцать-один
Таким образом, myDiffer
будет экземпляром KeyValueDiffers
, созданным Angulars DI, а myDiffer
будет введен в GSPoint
при создании экземпляра.
Но если вы хотите сделать это таким образом, то в компоненте или в службе, где бы вы ни использовали этот класс, вы должны передать экземпляр this.myDiffer
службы KeyValueDiffers
. (Примечание: - KeyValueDiffers
должен быть внедрен в тот компонент, из которого вы создаете объект этого класса GsPoint)
import {KeyValueDiffers , Component } from '@angular/core';
import {GSPoint} from '../gspoint/gspoint.ts';
@Component({
'selector': 'app-sample',
'templateUrl':'sample.html',
'styleUrl': 'sample.css'
})
export class Sample {
constructor(private diff: KeyValueDiffers){
}
ngOnInit(){
let gsPoint = new GSPoint(this.dff); // this is how you can create object
}
}