如何扩展angular@input decorator?
我正试图编写自定义属性装饰器来扩展angular@Input装饰器的技能 我的目标是使用现有的属性选择器获取可本地化的属性 /decorators/my decorators.ts如何扩展angular@input decorator?,angular,typescript,angular-cli,angular-decorator,Angular,Typescript,Angular Cli,Angular Decorator,我正试图编写自定义属性装饰器来扩展angular@Input装饰器的技能 我的目标是使用现有的属性选择器获取可本地化的属性 /decorators/my decorators.ts import {Input} from '@angular/core'; export interface InputDefinition {localizable: boolean; selector: string; } export function MyInput(inputDefinition: Input
import {Input} from '@angular/core';
export interface InputDefinition {localizable: boolean; selector: string; }
export function MyInput(inputDefinition: InputDefinition) {
const ngInput = Input(inputDefinition.selector);
return function (target: any, key: string) {
if (inputDefinition.localizable === true) {
console.log(`loclizable input ${inputDefinition.selector}`);
// implement localization for property.
}
ngInput(target, key);
};
}
import { Component, Input } from '@angular/core';
import { MyInput } from '../decorators/my-decorators';
@Component({
selector: 'my-component',
template: `<h1>{{myInput}}</h1>`
})
export class MyComponent {
//define input property with custom decorator
@MyInput({selector: 'my-input', localizable: false})
myInput = 'input default value';
}
/my component/mycomponent.ts
import {Input} from '@angular/core';
export interface InputDefinition {localizable: boolean; selector: string; }
export function MyInput(inputDefinition: InputDefinition) {
const ngInput = Input(inputDefinition.selector);
return function (target: any, key: string) {
if (inputDefinition.localizable === true) {
console.log(`loclizable input ${inputDefinition.selector}`);
// implement localization for property.
}
ngInput(target, key);
};
}
import { Component, Input } from '@angular/core';
import { MyInput } from '../decorators/my-decorators';
@Component({
selector: 'my-component',
template: `<h1>{{myInput}}</h1>`
})
export class MyComponent {
//define input property with custom decorator
@MyInput({selector: 'my-input', localizable: false})
myInput = 'input default value';
}
为什么不创建一个单独的装饰器(
@Localizable()
)?我认为AOT在编译时使用输入装饰器进行了一些优化…它不能与AOT一起工作@AndreiTătar如果您需要访问decorator中的属性绑定名称,您将如何使用单独的名称进行访问?您找到如何进行访问了吗?我正在尝试执行相同的操作,但出现错误“无法绑定到“”,因为它不是“”的已知属性。