Angular 角度:除非第二次单击mat select radio,否则无法获得同步
我跟在后面 我的问题是: 我选择的职业诽谤和显示的职业诽谤之间不同步 原因是: radioCheckedid,i,pro方法中的localStorage第一次不起作用。它在第二次单击后给出正确的结果 你知道如何解决这个错误吗?为什么? 如果你去chrome开发者工具。。。在应用程序选项卡中,您将看到两个不同的键 职业诽谤 职业自由 调查代码后,当页面初始化ngOnInit时 你在读一份服务 从本地存储中删除现有项 使用服务返回的值设置本地存储 这意味着默认情况下,该值将始终是服务返回的值。。。不是本地存储中的值 单击单选按钮方法:radioChecked后,相关值将在本地存储器中设置并显示在屏幕上 为了解决您的特定问题:我删除了从服务读取值,现在我们正在从ngOnInit中的localStorage读取 相关TS:Angular 角度:除非第二次单击mat select radio,否则无法获得同步,angular,typescript,angular-material,angular6,Angular,Typescript,Angular Material,Angular6,我跟在后面 我的问题是: 我选择的职业诽谤和显示的职业诽谤之间不同步 原因是: radioCheckedid,i,pro方法中的localStorage第一次不起作用。它在第二次单击后给出正确的结果 你知道如何解决这个错误吗?为什么? 如果你去chrome开发者工具。。。在应用程序选项卡中,您将看到两个不同的键 职业诽谤 职业自由 调查代码后,当页面初始化ngOnInit时 你在读一份服务 从本地存储中删除现有项 使用服务返回的值设置本地存储 这意味着默认情况下,该值将始终是服务返回的值。。。不
完成非常感谢您的帮助。但我想告诉你,我得到这个。selectedProfessionRadio在订阅中时未定义。所以,为了解决我的问题,我尝试添加这个。selectedProfessionRadio=pro.libelle outside subscribe。=>因此,我可以在不使用本地存储的情况下获得正确的结果。您好,先生,非常感谢您的帮助。但我想告诉你,我得到这个。selectedProfessionRadio在内部时未定义订阅,订阅无法保持同步。所以,为了解决我的问题,我尝试添加这个。selectedProfessionRadio=pro.libelle outside subscribe。=>因此,我可以在不使用本地存储的情况下得到正确的结果
import { Component } from '@angular/core';
import { FormGroup, NgForm, FormBuilder, Validators } from '@angular/forms';
import { Profession } from './profession.model';
import { UserService } from './user.service';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
selectedProfessionRadio = '';
professionLib: string;
editForm: FormGroup;
usrId: String;
professions: Profession[] =
[
{ id: 1, libelle: "Engineer", selected: false },
{ id: 2, libelle: "Student", selected: false },
];
radioChecked(id, i, pro) {
this.professions.forEach(pro => {
if (pro.id !== id) {
pro.selected = false;
}
else {
pro.selected = true;
}
})
this.userService.getProfessionById(id).subscribe(data => {
console.log(data);
pro = data as Profession;
localStorage.removeItem("ProfessionLibelle");
localStorage.setItem("ProfessionLibelle", pro.libelle);
this.selectedProfessionRadio = localStorage.getItem("ProfessionLibelle");
}, error => console.log(error));
}
constructor(private formBuilder: FormBuilder, private userService: UserService) { }
ngOnInit() {
let userId = localStorage.getItem("editUserId");
this.usrId = localStorage.getItem("editUserId");
this.selectedProfessionRadio = localStorage.getItem("ProfessionLibelle");
this.editForm = this.formBuilder.group
({
id: [],
name: ['', Validators.required],
pro: [this.selectedProfessionRadio, Validators.required]
});
this.userService.getUserId(+userId).subscribe(data => {
this.editForm.patchValue(data);
});
}
onSubmit() { }
}