在Angular2/Ionic2中加载Component后,是否有一种"正确"的方式来运行jQuery函数

dis*_*nte 0 ionic2 angular

必须在自定义组件中使用jQuery-Knob.经过大量的搜索和尝试/未命中尝试之后,我能够初始化旋钮的唯一方法是将jQuery函数包含setTimeout在0秒内,就像这个答案所说的那样.

constructor() {
    console.log('Hello SsdKnob Component');

    setTimeout(() => {
        $(".dial").knob();
    }, 0)
}
Run Code Online (Sandbox Code Playgroud)

但是,如果感觉有点hacky并且可能不稳定?(我不确定因为某种比赛条件我是否会遇到问题).

有没有更好/推荐的方法来做到这一点?

我试过没有成功:

ionViewLoaded() {
     $(".dial").knob();

}
Run Code Online (Sandbox Code Playgroud)

AfterViewInit() {
    $(".dial").knob();
}
Run Code Online (Sandbox Code Playgroud)

Gün*_*uer 6

AfterViewInit() { 应该

ngAfterViewInit() {
Run Code Online (Sandbox Code Playgroud)

或者你也可以使用

ngAfterContentInit() {
Run Code Online (Sandbox Code Playgroud)

在视图预计内容准备就绪后运行.

如果进行了jQuery-Knob一些异步初始化,这可能还不够.然后,您应该检查组件在完成初始化时是否发出事件.setTimeout()应该是最后的手段.