我正在尝试使用从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”时使用,但是没有动画。是否需要更改设置以“启用”动画,或者我缺少明显的东西?
通过提供的上下文,很难确切说明为什么它不起作用。
您真正需要做的是:
设置要路由到的组件:
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也可以实现这些目标。
干杯,让我知道是否还有其他问题。
[通过nativescript查看Groceries应用程序,它是所有nativescript组件的绝佳资源-https://github.com/NativeScript/sample-Groceries。您可以在其中找到他们提供的过渡动画。