
메소드 데코레이터는 Angular의 독점적인 기능이 아닙니다. 이 기사에서는 주로 Angular의 메소드 데코레이터 사용을 소개합니다. [관련 튜토리얼 추천: "Angular 튜토리얼"]
es6에서(Decorator)는 클래스(클래스)에 관련된 구문으로, 클래스와 클래스 메서드에 주석을 달거나 수정하는 데 사용됩니다. 컴파일하는 동안 "@function name" 구문은 일반적으로 클래스 및 클래스 메서드 정의 앞에 배치됩니다. 데코레이터에는 클래스 데코레이터와 클래스 메서드 데코레이터라는 두 가지 유형이 있습니다.
Angular에서 가장 일반적인 데코레이터는 @Component 클래스 데코레이터이며 메서드에 데코레이터를 추가할 수도 있습니다.

데코레이터는 함수입니다. 메소드 데코레이터는 메소드 정의를 모니터링, 수정 또는 대체하는 데 사용할 수 있습니다
. 메소드 데코레이터를메소드 정의를 모니터링, 수정 또는 대체할 수 있습니다. 이러한 방식으로 우리는 이 캡슐화 계층을 유연하게 사용하여 많은 작업을 수행할 수 있습니다.
가장 일반적인 것은 검증입니다. 이 레이어를 통해 메소드를 캡슐화하여 통합 권한 확인을 수행할 수 있습니다. 이런 방식으로 메소드에 권한 확인을 추가해야 하는 경우 반복 대신 이 메소드 데코레이터를 추가하면 됩니다. 확인 방법.
또는 통일된 팝업 창이나 프롬프트 처리일 수도 있습니다. 다양한 메소드의 경우 실행 후에 통일된 프롬프트 처리가 수행될 수 있으므로 통일된 처리를 위해 메소드 데코레이터를 추가할 수 있습니다.
전체적으로 메소드 데코레이터의 목적은 각 메소드 호출 중에 필요할 때 재사용할 수 있도록 일부 메소드의 통합 논리를 캡슐화하는 것입니다.
데코레이터에는 주로 세 가지 입력 매개변수가 있습니다.
import { Component, OnInit } from '@angular/core';
function log(대상: 임의, 키: 문자열, 설명자: 임의) {
console.log(대상);
console.log(키);
console.log(설명자);
}
@요소({
선택기: 'app-fn-test',
templateUrl: './fn-test.comComponent.html',
styleUrls: ['./fn-test.comComponent.scss']
})
내보내기 클래스 FnTestComponent는 OnInit {를 구현합니다.
생성자() { }
ngOnInit(): 무효 {
this.pay(2,3)
}
@통나무
pay(Price: number, count:number): 숫자 {
반품 가격*개수
}
} 
그리고 메소드 데코레이션은 두 가지 유형으로 나눌 수 있습니다. 하나는 매개변수를 전달하는 메소드 데코레이터이고, 다른 하나는 매개변수를 전달하지 않는 메소드 데코레이터입니다.
데코레이팅된 메소드인. 이 메소드를 통해 전달된 매개변수와 함수의 실행 결과를 얻을 수 있습니다.
function log(target: any, key: 문자열, 설명자: 모두) {
let 메소드 = descriptor.value;
descriptor.value = 함수 (...args: any[]) {
var 결과: any = method.apply(this, args);
console.log(`메서드:${key}, args:${JSON.stringify(args)}, return:${result}`);
결과 반환;
}
} 매개변수를 전달하는 경우 이전 함수 외부에 다른 레이어를 래핑해야 합니다. 외부 함수는 전달된 값을 얻을 수 있으며 내부 레이어에서 반환되는 함수는 매개변수가 없는 이전 함수와 동일합니다. 이 함수를 사용하려면 세 가지 매개변수를 얻을 수 있습니다.
function log(nowTime: Date) {
console.log(nowTime);
반환 함수(대상: 임의, 키: 문자열, 설명자: 임의){
let 메소드 = descriptor.value;
descriptor.value = 함수 (...args: any[]) {
var 결과: any = method.apply(this, args);
console.log(`메서드:${key}, args:${JSON.stringify(args)}, return:${result}`);
결과 반환;
}
}
}
내보내기 클래스 FnTestComponent는 OnInit {를 구현합니다.
...
@log(새 날짜())
pay(Price: number, count:number): 숫자 { return Price*count
}
}
// 2022년 6월 7일 화요일 18:48:22 GMT+0800(중국 표준시)
// fn-test.comComponent.ts:9 method: pay, args: [2,3], return: 6 메서드 데코레이터를 통해 클래스 내부 메서드에 대해 통일된 논리적 처리를 수행할 수 있어 불필요한 작업을 많이 줄일 수 있습니다. 코드 중복으로 인해 방법이 더 간단해지고 후속 2차 개발 비용도 크게 절감될 수 있습니다.