如何在NativeScript中使用页面转换

问题描述 投票:3回答:2

我正在尝试使用从routerExtensions开始的页面转换,但没有成功。 (2.3.0)

我在js中尝试过:

this.routerExtensions.navigate(
    [
        'myPage'
    ], 
    {
        animated: true, 
        transition: 
        {
            name: 'flip', 
            duration: 2000, 
            curve: 'linear'
        }
    } 
);

而且我在xml中尝试过:

<Button text="Goto myPage" [nsRouterLink]="['/myPage']" pageTransition="flip"></Button>

这两种方法都可以在我导航到“ myPage”时使用,但是没有动画。是否需要更改设置以“启用”动画,或者我缺少明显的东西?

angular2-nativescript
2个回答
0
投票

通过提供的上下文,很难确切说明为什么它不起作用。

您真正需要做的是:

设置要路由到的组件:

app-routing.module.ts

const routes: Routes = [
  { path: '', pathMatch: 'full', redirectTo: '/home' },
  { path: 'home', component: HomeComponent },
  { path: 'about', component: AboutComponent },
  { path: 'contact', component: ContactComponent },
];

router-outlet插入组件中的本机路由器扩展名>

app.component.ts

import { RouterExtensions } from "@nativescript/angular/router";

@Component({
    selector: "ns-app",
    templateUrl: "./app.component.html"
})
export class AppComponent {
  constructor(private routerExtensions: RouterExtensions) {}

  public navigate(link: string): void {
    this.routerExtensions.navigate([link], {
      animated: true,
      transition: { name: 'slide' }
    });
  }
}

当然还有一种方法可以调用此方法app.component.ts

<StackLayout>
  <FlexboxLayout>
    <Button text="Home" (tap)="navigate('home')"></Button>
    <Button text="About" (tap)="navigate('about')"></Button>
    <Button text="Contact" (tap)="navigate('contact')"></Button>
  </FlexboxLayout>
  <StackLayout>
    <page-router-outlet actionBarVisibility="never"></page-router-outlet>
  </StackLayout>
</StackLayout>

我已经在这里https://github.com/gsavchenko/nativescript-page-transitions设置了一个工作仓库来演示此操作。不使用nativescript本机路由API也可以实现这些目标。

干杯,让我知道是否还有其他问题。


-1
投票

[通过nativescript查看Groceries应用程序,它是所有nativescript组件的绝佳资源-https://github.com/NativeScript/sample-Groceries。您可以在其中找到他们提供的过渡动画。

© www.soinside.com 2019 - 2024. All rights reserved.