在angular1中,我们根据ng-if条件调用函数ng-init。以下代码表示如果第一个div匹配日期和&&然后它将检查第二个条件,检查或未检查。如果选中则会自动调用play()函数,如果没有检查则调用pause函数。
<div ng-if="ramadan.date === date && ramadan.time === clock">
<div ng-if="ramadan.checked" ng-init="play()"></div>
<div ng-if="!ramadan.checked" ng-init="pause()"></div>
</div>
我想通过angular2 typescript转换此代码。有没有办法根据角度2中的条件自动调用函数?
答案 0 :(得分:11)
Angular2中没有ng-init
。您可以自己轻松地创建这样的指令。
import { Directive, Input } from '@angular/core';
@Directive({
selector: '[ngInit]'
})
export class NgInit {
@Input() ngInit;
ngOnInit() {
if (this.ngInit) {
this.ngInit();
}
}
}
然后像
一样使用它<div *ngIf="ramadan.date === date && ramadan.time === clock">
<div *ngIf="ramadan.checked" [ngInit]="play"></div>
<div *ngIf="!ramadan.checked" [ngInit]="pause"></div>
</div>
答案 1 :(得分:4)
工作代码,
自定义指令:
import { Directive, Input } from '@angular/core';
@Directive({ selector: '[myCondition]' })
export class ngInitDirective {
constructor() { }
@Input() set myCondition(condition: boolean) {
if (!condition) {
console.log("hello")
} else {
console.log("hi")
}
}
}
在模板中:
<ion-label *ngIf="setting1.date === current_date && setting1.time === current_time">
<div *myCondition="setting1.checked === condition" >Play</div>
<div *myCondition="!setting1.checked === !condition">pause</div>
</ion-label>
答案 2 :(得分:1)
您可以在组件类中使用ngOnInit方法,但请记住实现 OnInit 接口。
以下是一个例子:
@Component({
selector: 'ramadan',
template: `<div>Ramadan</div>`
})
class Ramadan implements OnInit {
ngOnInit() {
this.play();
}
}
您可以了解有关ngOnInit here的更多信息。