ngOnInit忽略CSS转换



我有一个div,我想让它的宽度从0到100增加在一个3s的间隔使用CSS过渡属性。当我在Chrome开发者工具中更改此属性时,它在3秒的持续时间内从0-100增长得很好。但是,如果我应用组件的ngOnInit()的样式,它是即时的。我做错了什么吗?

编辑:我确实自己解决了这个问题,但是一个也能解释为什么它有效的答案将是伟大的。

Component.ts:

@Component({
    selector: 'notFound',
    templateUrl: 'app/notFound.component/notFound.component.html',
    directives: [ROUTER_DIRECTIVES]
})
export class NotFoundComponent {
    ngOnInit() {
        (<HTMLElement>document.querySelector('.determinate')).style.width = "100%";
    }
}

Component.html:

<div class="wrapper">
    <i class="material-icons error">error_outline</i>
    <div class="not-found-text"> No such page 'round here.</div>
    <a [routerLink]="['Menu']" class="waves-effect waves-light btn blue">
        <i class="material-icons">home</i>
        <!--home-->
    </a>
    <div class="progress">
        <div class="determinate"></div>
    </div>
</div>
<style>
    .progress {
        margin-top: 30px;
        background: white;
    }
    .determinate {
        width: 0%;
        background: #2196F3;
        transition: width 3s ease-in-out;
    }        
</style>

我通过在一个0ms的setTimeout中包装调用来解决这个问题。真没想到。

ngOnInit() {
    setTimeout(function () {
        (<HTMLElement>document.querySelector('.determinate')).style.width = "100%";
    }, 0);
}

相关内容

  • 没有找到相关文章

最新更新