在subscribe函数中设置变量时,在Angular6中更新视图
呈现文件的第一个组件选择html 当我点击浏览按钮时,我重定向到另一个组件Fileselect组件,它是第二个组件在subscribe函数中设置变量时,在Angular6中更新视图,angular,angular4-router,Angular,Angular4 Router,呈现文件的第一个组件选择html 当我点击浏览按钮时,我重定向到另一个组件Fileselect组件,它是第二个组件this.goto('Fileselect') 问题是,当我从文件组件中选择一个文件时,我必须在第一个组件的输入字段中显示它 当我点击选择类按钮时,我调用了redirect()函数 在文件选择组件中,我使用服务将文件名传递给第一个组件,如下代码所示 redirect(){ this._messageService.filter(this.selectedFile); th
this.goto('Fileselect')代码>
问题是,当我从文件组件中选择一个文件时,我必须在第一个组件的输入字段中显示它
当我点击选择类按钮时,我调用了redirect()函数
在文件选择组件中,我使用服务将文件名传递给第一个组件,如下代码所示
redirect(){
this._messageService.filter(this.selectedFile);
this.router.navigateByUrl('');
}
在我想要这个文件名的第一个组件中,我已经订阅了函数,如图所示
ngOnInit() {
this._messageService.listen().subscribe((m:any) => {
this.fileName = m
this.loadXMLasJSON()
console.log(this.fileName)
});}
在获取文件名时,我在subscribe函数中分配变量this.fileName。但是视图没有得到更新
我的视图代码
<input type="text" class="form-control image-preview-filename" value="{{fileName}}" />
有什么问题吗
请帮我解决这个问题。请从value属性中删除双引号
将其更改为:
使用[ngModel]
而不是值
:
<input type="text" class="form-control image-preview-filename" [ngModel]="fileName" />
this.fileName的值是什么?
?这是我选择的文件名,比如example.xml。我建议使用ngModel,然后更新视图,在构造函数中注入Changedetectorref,并在订阅方法中使用Changedetectorref中的markForCheck()或detectChanges()方法。在赋值后调用这些方法之一filename@SumeetKale当我这样做时,我会得到错误视图DestroyedError:尝试使用已销毁的视图:detectChangesGot它。我想你的导航方法是错误的。您使用的是普通路由器出口还是命名路由器出口。我认为您可以使用命名路由器插座解决此问题。在这种情况下,您可以在命名路由器出口中导航fileselect路由,这样可以防止您的第一个组件在导航时不被破坏。完成后,它没有任何区别try[(ngModel)],然后将输入类型从文本更改为file。希望它能起作用。:)