Ich versuche, einen Dienst mit dynamisch erstellten Methoden zu schreiben.Dynamic Ionic2 Service-Methoden
test.service.ts:
import {Injectable} from '@angular/core';
@Injectable()
export class TestService {
constructor() {
}
init(defaults: any) {
Object.keys(defaults).forEach(key => {
this[key] = (val?: any) => {
console.log(key, val)
}
});
}
}
app.component.ts
export class MyApp {
constructor(public platform: Platform,
private test:TestService) {
this.initializeApp();
test.init({
foo: 'bar'
});
console.log(test);
test.foo('foobar');
}
initializeApp() {
this.platform.ready().then(() => {
StatusBar.styleDefault();
Splashscreen.hide();
});
}
}
Also, wenn ich die Zeile aus kommentieren test.foo('foobar');
es transpiling rechts. Wenn ich die Zeile zurück Kommentar- in es funktioniert (ich kann in der Konsole sehen), aber ich bekomme einen Typoskript Fehler:
[21:42:12] typescript: src/app/app.component.ts, line: 28 Property 'foo' does not exist on type 'TestService'. L27: console.log(test); L28: test.foo('foobar');
, die ich da zu der Zeit unterstand den Dienst des transpiling nicht das Verfahren hat. Meine Frage ist, wie ich Artescript sage, dass es mir egal ist.
ich test['foo']('foobar')
verwenden könnte, aber ich will nicht ...
I created a git repo to demonstrate my attempt
Sorry, aber das ist nicht einmal annähernd das, was ich versuche zu tun. – Heiko