如何强制组件在Angular 2中重新渲染?出于调试目的,使用Redux我想强制组件重新渲染它的视图,这可能吗?
我正在使用带有哈希定位策略的角度2.
该组件加载了该路由:
"departments/:id/employees"
Run Code Online (Sandbox Code Playgroud)
到目前为止很好.
在我成功批量保存多个已编辑的表行后,我想通过以下方式重新加载当前路由URL:
this.router.navigate([`departments/${this.id}/employees`]);
Run Code Online (Sandbox Code Playgroud)
但没有任何反应,为什么?
我目前正在编写我的第一个Angular 2应用程序.我有一个OverviewComponent,它有以下简单的模板:
<div class="row">
<div class="col-lg-8">
<router-outlet></router-outlet>
</div>
<div class="col-lg-4">
<app-list></app-list>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
当访问网址时,/我的路由器会将我重定向到我/overview,然后在路由器插座中加载地图.它<app-list>有一个可点击的项目列表,用于触发<app-detail>显示而不是应用程序组件.因此我在url中传递引用json文件的id :( /details/:id在我的路由中).
所有上述工作完全没问题.如果我现在单击其中一个列表项,则显示详细信息,但是当我选择另一个列表元素时,视图不会更改为新的详细信息.URL确实更改但内容未重新加载.如何实现DetailComponent的重新初始化?
我正在尝试从rc1迁移到rc4,我无法获取查询字符串参数.ActivatedRoute对象始终为空.
hero.component.ts
import {Component, OnInit} from "@angular/core";
import {Control} from "@angular/common";
import {ROUTER_DIRECTIVES, ActivatedRoute} from '@angular/router';
@Component({
template: '../partials/main.html',
directives: [ROUTER_DIRECTIVES]
})
export class HeroComponent implements OnInit {
constructor(private _activatedRoute: activatedRoute) {
}
ngOnInit() {
this._activatedRoute.params.subscribe(params => {
console.log(params);
});
}
}
Run Code Online (Sandbox Code Playgroud)
main.ts
import {bootstrap} from '@angular/platform-browser-dynamic';
import {HTTP_PROVIDERS, RequestOptions, Http} from '@angular/http';
import {AppRouterProviders} from './app.routes';
bootstrap(AppComponent, [
AppRouterProviders,
HTTP_PROVIDERS
]);
Run Code Online (Sandbox Code Playgroud)
app.component.ts
import {Component, OnInit} from '@angular/core';
import {HeroComponent} from './hero.component';
import {RouteConfig, Router, ROUTER_DIRECTIVES} from '@angular/router';
@Component({
selector: …Run Code Online (Sandbox Code Playgroud) 我正在使用自定义管道来过滤属性列表,并希望将选定的过滤器添加到 url,以便我的客户可以共享过滤后的列表
如果我使用它,那么页面将被重新加载:
this.router.navigate([], { relativeTo: this.activatedRoute, queryParams: { county: countyId }, queryParamsHandling: 'merge' });
Run Code Online (Sandbox Code Playgroud)
我试图添加这个,但结果相同(但没有写入浏览器历史记录):
skipLocationChange: true
Run Code Online (Sandbox Code Playgroud)
所需的功能是,当使用管道时,我更新查询参数,没有任何问题,这甚至可能吗?
我不想重新加载页面的原因是我有其他不需要重新加载的东西:)
这个问题已经问过了.当我们在这样的链接上第二次单击时<a routerLink="/home" routerLinkActive="active">Home</a>,页面不会重新加载.
Angular2 Router3 - 无法重新加载/刷新活动路由
但是,当角度2处于测试版时,它已经被解决,并且关于这个问题存在一个角度问题.
现在我们有角度4,我会问,提供的答案是否仍然是解决问题的最佳方法.