angular - 为什么'index'在routerLink中等于0,但在字符串插值中等于1?
问题描述
<form class="mt-3 mb-5" (ngSubmit)="onSubmit()" #f="ngForm">
<p class="mb-0 mt-1" id="invalidEmail" *ngIf="!emailValid">Invalid Email</p>
<input class="mb-0 mt-1" type="email" id="email" name="email" ngModel required email><br>
<button
(click)="getDataFromAPI()"
class="btn btn-primary mt-2"
type="submit"
[disabled]="!f.valid"
[routerLink]="['/profile', index]">Login</button>
</form>
<div class="card" style="width: 18rem;">
<div class="card-header">
Featured
</div>
<ul class="list-group list-group-flush">
<li class="list-group-item">Email: {{ rEmail }}</li>
<li class="list-group-item">Index: {{ index }}</li>
</ul>
</div>
ts文件:
export class HomeComponent implements OnInit {
@ViewChild('f') signupForm: NgForm;
data:Array<any>;
data2:Array<any>;
index: number = 0;
constructor(private JSONPlaceholder: JSONPlaceholderService) {
this.data = new Array<any>();
this.data2 = new Array<any>();
}
getDataFromAPI(){
this.JSONPlaceholder.getData().subscribe((data) => {
this.data = data;
for (var i = 0; i < data.length; i++) {
this.data2.push(data[i].email);
}
if(!this.data2.includes(this.rEmail)) {
this.emailValid = false;
} else {
this.index = this.data2.indexOf(this.rEmail);
}
})
}
}
当我单击按钮时,页面将转到“http://localhost:4200/profile/0”,但是当没有路由器链接时,字符串插值将“索引”等于 1。
'index' 值应该等于 1。因为那是变量被设置为。但是在 routerLink 中,'index' 保持为 0。为什么数字不会改变?显然,更改反映在表单下方的列表组中,但 routerLink 没有转到正确的位置。
解决方案
这执行:
[routerLink]="['/profile', index]
前:
(click)="getDataFromAPI()"
所以这就是为什么你在页面上得到一个正确的索引而在路线上得到一个错误的数字。
[routerLink]
只需this.router.navigate(['/profile', this.index]
在索引更新为正确索引后删除即可。
推荐阅读
- ios - 旧的视图控制器在后台仍然可见
- java - 如何为我的自定义可运行方法使用 java lambda 表达式
- node.js - 在 React 和 Node 之间执行客户端请求,都在单独的 Docker 容器中
- django - 你怎么知道要测试什么状态码?
- openstreetmap - 如何将 OSM 与 optaplanner 工作台集成
- flutter - 如何将 StatefulWidget 类添加到 BottomNavigationBar
- spring - Spring Security 的默认用户模式和初始化脚本?
- image - 在knitr中插入外部图像
- string - Strings that appear same are reflected as unequal in lua
- java - 如何添加 JVM 选项?