2017-02-02 4 views
0

Элемент html может передаваться без знака атрибута, который подразумевает значение, например required, на элемент input. Можно ли сделать то же самое с угловым компонентом?Можно ли передать атрибут входного значения без знака компоненту?

Пример:

<my-component required></my-component> 

... 

@Component({ 
    selector: 'my-component', 
}) 
export class MyComponent implements OnInit { 

    @Input() required; 

    constructor() { } 

    ngOnInit() { 
    console.log(this.required); // true?? 
    } 
} 
+0

Plz добавить более подробную информацию к вашему вопросу jcroll –

ответ

2

Угловая не обеспечивает прямой поддержки, но есть обходные

isRequired:boolean = false; 
    @Input() set required(val) { 
    this.isRequired = true; // only called when the attribute exists 
    } 

или

constructor(@Attribute('required') required) { 
    console.log('constructor': required == ''); 
    } 

Plunker example

Я не тестировал, как он себя ведет, когда атрибут динамически добавляется/удаляется.

0

Атрибут без знака поступает как пустая строка. Если вам необходимо поддерживать атрибут в обоих ценных и бесполезных форм, определить сеттер следующим образом:

@Input() set required(val: (boolean | string)) { 
    if (typeof val === 'boolean') { 
     this.isRequired = val; 
    } else { 
     this.isRequired = value.length === 0 || value === 'true'; 
    } 
} 

Это работает с атрибутом связывания ([required]="..."), а также.

Смежные вопросы