gpt4 book ai didi

javascript - Angular 6 - 导航到子路由刷新整个页面

转载 作者:太空狗 更新时间:2023-10-29 18:28:56 24 4
gpt4 key购买 nike

所以我使用的是 Angular 6,我正在尝试从父路由导航到子路由。导航成功,但是在呈现子组件时出现不需要的页面刷新。换句话说,导航有效,但它也会无缘无故地刷新页面。这是我的代码:

const appRoutes: Routes = [
{
path: "parent/:param1/:param2", component: ParentComponent,
children: [
{ path: ":param3", component: ChildComponent }
]
},
{ path: "", redirectTo: "/index", pathMatch: "full" },
{ path: "**", redirectTo: "/index" }
];

我的父组件是这样的:

import { Component } from "@angular/core";
import { ActivatedRoute } from "@angular/router";

@Component({
selector: "my-parent",
templateUrl: "./parent.component.html"
})

export class ParentComponent {
param1: string;
param2: string;
loading: boolean;
tutorials: any[];

constructor(public route: ActivatedRoute) {
this.loading = true;
this.param1= this.route.snapshot.params.param1;
this.param2 = this.route.snapshot.params.param2;
// get data here
}
}

我的子组件如下所示:

import { Component } from "@angular/core";
import { ActivatedRoute } from "@angular/router";

@Component({
selector: "my-child",
templateUrl: "./child.component.html"
})
export class ChildComponent {
param1: string;
param2: string;
param3: string;
loading: boolean;
result: any;

constructor(public route: ActivatedRoute) {
this.loading = true;
this.param1= this.route.snapshot.params.param1;
this.param2 = this.route.snapshot.params.param2;
this.param3 = this.route.snapshot.params.param3;

}
}

现在,我尝试从父组件导航到子组件的方式如下:

<a [routerLink]="['/parent', param1, param2, param3]">             
<b>Navigate</b>
</a>

正如我所说,导航是成功的,但是有一个不需要的页面刷新,我想摆脱它,但我一直无法找到可行的解决方案。我真的不知道是什么原因造成的。我是 Angular 6 的新手。

预先感谢您的回答。

编辑:添加父组件 html

<router-outlet></router-outlet>
<div class="row" *ngIf="route.children.length === 0">
// content here
</div>

最佳答案

所以我找到了一个可行的解决方案,虽然不是很优雅,但它......有效。在我的父组件中,我创建了一个这样的方法:

constructor(public route: ActivatedRoute, private router: Router) {
this.loading = true;
this.param1 = this.route.snapshot.params.param1;
this.param2 = this.route.snapshot.params.param2;
// get data
}

navigateToChild(param3: string) {
this.router.navigate([param3], { relativeTo: this.route });
}

在父模板中,我这样做了:

<a (click)="navigateToChild(paramFromServer)">
<b>Navigate</b>
</a>

不再刷新这个。

谢谢大家的帮助。

关于javascript - Angular 6 - 导航到子路由刷新整个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51724694/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com