繁体   English   中英

Angular 2 Material - 路由器动画打破了sidenav内容并滚动

[英]Angular 2 Material - Router animations broke sidenav content and scroll

我正在尝试在我的Angular 2 Material(angular / material2)应用程序中添加一些路由器动画。 没有动画,一切正常,但当我将它们添加到我的组件时,内容溢出视口,滚动行为不再起作用。

要添加动画,我已经定义了一个ts文件router.animations.ts

import { AnimationEntryMetadata, trigger, state, animate, style, transition } from "@angular/core";

export function slideToLeft(): AnimationEntryMetadata {
    "use strict";
    return trigger("slideToLeft", [
        state("void", style({ position: "fixed", width: "100%" })),
        state("*", style({ position: "fixed", width: "100%" })),
        transition(":enter", [
            style({ transform: "translateX(100%)" }),
            animate("0.5s ease-in-out", style({ transform: "translateX(0%)" }))
        ]),
        transition(":leave", [
            style({ transform: "translateX(0%)" }),
            animate("0.5s ease-in-out", style({ transform: "translateX(-100%)" }))
        ])
    ]);
}

然后在我的组件内:

import { Component } from "@angular/core";
import { slideToLeft } from "./router.animations";

@Component({
    selector: "home",
    templateUrl: "src/home.component.html",
    animations: [slideToLeft()],
    host: { "[@slideToLeft]": "" }
})
export class HomeComponent  {

    constructor() {
    }
}

这是一个显示问题的plunker:

https://plnkr.co/edit/Vz1iqSmcWwu3QG65Qxgw?p=preview

何我能解决这个问题吗?

滚动被禁用,因为该组件由于动画而设置为“position:fixed”。 将第二个状态更改为“position:relative”并重置离开转换中的位置将解决此问题:

export function slideToLeft(): AnimationEntryMetadata {
    "use strict";
    return trigger("slideToLeft", [
        state("void", style({ position: "fixed", width: "100%" })),
        state('*', style({position:'relative', width:'100%'}) ),
        transition(":enter", [
            style({ transform: "translateX(100%)" }),
            animate("0.5s ease-in-out", style({ transform: "translateX(0%)" }))
        ]),
        transition(":leave", [
            style({transform: 'translateX(0%)', position:'fixed', width:'100%'}),
            animate("0.5s ease-in-out", style({ transform: "translateX(-100%)" }))
        ])
    ]);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM