Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何扩展angular@input decorator?_Angular_Typescript_Angular Cli_Angular Decorator - Fatal编程技术网

如何扩展angular@input decorator?

如何扩展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

我正试图编写自定义属性装饰器来扩展angular@Input装饰器的技能

我的目标是使用现有的属性选择器获取可本地化的属性

/decorators/my decorators.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';
}
/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中的属性绑定名称,您将如何使用单独的名称进行访问?您找到如何进行访问了吗?我正在尝试执行相同的操作,但出现错误“无法绑定到“”,因为它不是“”的已知属性。