内のサービス機能を呼び出すことが可能であるあなたは、この方法にはグローバル
注を行うことができます。これは(おそらくあなたが必要としません)いくつかの余分な原料が含まれていてもよいANS。だから、あなたが必要とするものに集中し、他の必要のないものは無視することができます。私は、これはよりグローバルなシナリオを考慮してANS入れている(例えば - あなたは何のcheckPermission機能にいくつかの外部サービスを注入する場合)
checkpermission.ts
import {Injector} from 'angular2/core';
import {appInjector} from './app-injector';
import {externalService} from './externalService'; <---------------------- //some external service
import {Router, ComponentInstruction} from 'angular2/router';
export const checkpermission= (next: ComponentInstruction, previous: ComponentInstruction) => {
let injector: Injector = appInjector(); // get the stored reference to the injector
let externalService: externalService= injector.get(externalService);
let router: Router = injector.get(Router);
// return a boolean or a promise that resolves a boolean
return new Promise((resolve) => {
//here you can play with externalService
if(something is true)
resolve(true);
else
resolve(false);
});
};
somecomponent。 ts
somecomponentではche ckpermission.tsこのような、
import {checkpermission} from './checkpermission';
@CanActivate((next: ComponentInstruction, previous: ComponentInstruction) => {
return checkpermission(next, previous);
})
アプリ-injector.ts
import {Injector} from 'angular2/core';
let appInjectorRef: Injector;
export const appInjector = (injector?: Injector):Injector => {
if (injector) {
appInjectorRef = injector;
}
return appInjectorRef;
};
私はそれはあなたの要件を満たすことを願っています。
ありがとうございました –
あなたはウェルカム@deepkです。あなたの必要に応じてそれを使用してください。このansには、余分なものがいくつか含まれている可能性があります(グローバルシナリオを参考にして参考にしてください)。 – micronyks
大丈夫@micronyks。クラス内のパラメータでこのグローバル関数を呼び出すことは可能ですか? –