在 Angular 9 中,要从组件读取属性,您可以使用@Input()装饰器将属性注入到指令中
example.directive.ts
的文件。在这个文件中,我们将定义一个名为ExampleDirective
的指令。import { Directive, ElementRef, Input } from '@angular/core';
@Directive({
selector: '[appExample]'
})
export class ExampleDirective {
@Input('appExample') customProperty: any;
constructor(private el: ElementRef) { }
ngOnChanges() {
// 在这里,您可以根据 customProperty 的值改变 DOM ,或者执行其他操作
this.el.nativeElement.style.backgroundColor = this.customProperty;
}
}
在这个例子中,我们使用@Input()装饰器定义了一个名为customProperty
的输入属性。我们把改变元素背景颜色的操作放在ngOnChanges()
生命周期钩子中,这样我们可以读取属性值的变化。
<!-- app.component.html -->
<div [appExample]="propertyValue">Custom property value is: {{ propertyValue }}</div>
// app.component.ts
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent {
propertyValue = 'red';
}
现在,ExampleDirective
将从AppComponent
读取propertyValue
属性,并根据其值改变元素的背景颜色。当propertyValue
属性值发生改变时,ngOnChanges()
生命周期钩子将会触发,指令的逻辑会相应地更新 DOM。
领取专属 10元无门槛券
手把手带您无忧上云