Jestem nowy w Angular 2, ale mam dobre doświadczenie w Angular 1.x.jak zaimplementować aop w kątowej 2
otrzymuję błąd: Nie można odnaleźć modułu 'aspect.js/dist/lib/aspekt'
Poniżej mój kod:
logging.aspect.ts
import {Injectable} from '@angular/core';
import {beforeMethod, Metadata} from 'aspect.js/dist/lib/aspect';
@Injectable()
export class LogAspect {
@beforeMethod({
classNamePattern: /(Matter|Customer)Service/,
methodNamePattern: /^(get)/
})
invokeBeforeMethod(meta: Metadata) {
console.log(`Inside of the logger.
Called ${meta.className}.${meta.method.name}
with args: ${meta.method.args.join(', ')}.`
);
}
}
aspekt definiuje poradę, która jest stosowana do wszystkich wywołań metod zaczynających się od uzyskania w ramach klas zawierających wzór regex (Matter | Customer) w ich nazwie. Dostępna rad Metadane mogą zawierać rzeczywiste nazwy method- i klasa wraz z parametrami metoda wezwanie
invoice.service.ts
import {Injectable} from '@angular/core';
import {Http} from '@angular/http';
import {Observable} from 'rxjs/Observable';
import 'rxjs/Rx';
import {Wove} from 'aspect.js/dist/lib/aspect';
import {Matter} from './Matter.model';
@Injectable()
@Wove()
export class MatterService{
private url: string;
constructor(private http: Http) {
this.url = '/data/matters/data.json';
}
get(): Observable<Matter[]> {
return this.http.get(this.url)
.map(
(response) => <Matter[]>response.json()
);
}
}
I proszę sugerować jakikolwiek inny sposób w celu wdrożenia AOP w angular2
Czy używasz nowego kompilatora AOT Angular 2? AOT łamie dekoratorów stron trzecich, które, jak sądzę, próbują rozwiązać. Działając pod JIT, moje niestandardowe dekoratory działają idealnie. Rozumiem, że dekoratory i AOP są ortogonalne, ale ponieważ używasz składni dekoratora, po prostu wiesz, że nie działa ona dobrze z AOT, ponieważ AOT usuwa dekoratory w procesie zwanym obniżaniem, w którym przekształca się je w statyczne metadane (mogło to być częściowo rozwiązane) . (witamy w AOT: TypeScript ze skasowanymi dekoratorami i próbującymi być reifikowanymi i nieudanymi-trudnymi-ponieważ-po-pomysłem-to-sutpid-in-JavaScript "typy") –
Prawdopodobnie możesz otworzyć problem na https : //github.com/mgechev/aspect.js. Minko Gechev jest bardzo zaangażowany w Angular, jak również –