这是componet.ts文件中的ngOnInit
ngOnInit() {
this.locationService.getLocation().subscribe( locations => {
this.locations = locations;
});
}
<a [routerLink]="['/locations-list']">
当我使用[routerLink]
导航到上述组件时,它将导航到该组件并加载视图,但不会在 ngOnInit 方法上方触发。但是,如果我刷新页面,它就可以正常工作。
以上问题是否有解决方法?
我已经使用href
导航到页面,并且使用上述href
的方法始终可以正常工作,但是速度很慢。这就是为什么我将href
更改为[routerLink]
。
这是包含视图的component.html
<div class="table-responsive">
<table class="table">
<thead class=" text-primary">
<th>
Location Name
</th>
</thead>
<tbody *ngIf="locations?.length > 0">
<tr *ngFor="let location of locations">
<td *ngIf="location.verified != false">
{{location.locationName}}
</td>
</tr>
</tbody>
</table>
</div>
</div>
答案 0 :(得分:1)
当路由器参数更改时,基本路由保持不变。因此它不会触发ngOnInit
。因此,订阅路由事件
ngOnInit() {
this.route.params.subscribe(
params => {
// your code
});
}
答案 1 :(得分:1)
ngOnInit()仅在实例化组件后调用一次,但在路由更改时不会调用。您可以注入路由器并订阅其事件或参数,以获取有关路由更改的通知。
ngOnInit() {
this.route.params.subscribe(params: any) => {
if(params) //your code
});
}
答案 2 :(得分:1)
尝试一下
import torch
B, C = 4, 3
input = torch.randn(B, C)
"""
>>> input
tensor([[-0.5043, 0.9023, -0.4046],
[-0.4370, -0.8637, 0.1674],
[-0.5451, -0.5573, 0.0531],
[-0.6751, -1.0447, -1.6793]])
"""
target = torch.randint(low=0, high=C, size=(B, ))
"""
>>> target
tensor([0, 2, 2, 1])
"""
# The unrolled version
nll = 0
nll += input[0][target[0]] # add -0.5043
nll += input[1][target[1]] # add -0.1674
nll += input[2][target[2]] # add 0.0531
nll += input[3][target[3]] # add -1.0447
nll *= (-1/B)
print(nll)
# tensor(0.3321)
# The compact way using numpy indexing
_nll = -input[range(0, B), target].mean()
print(_nll)
# tensor(0.3321)