在subscribe函数中设置变量时,在Angular6中更新视图

在subscribe函数中设置变量时,在Angular6中更新视图,angular,angular4-router,Angular,Angular4 Router,呈现文件的第一个组件选择html 当我点击浏览按钮时,我重定向到另一个组件Fileselect组件,它是第二个组件this.goto('Fileselect') 问题是,当我从文件组件中选择一个文件时,我必须在第一个组件的输入字段中显示它 当我点击选择类按钮时,我调用了redirect()函数 在文件选择组件中,我使用服务将文件名传递给第一个组件,如下代码所示 redirect(){ this._messageService.filter(this.selectedFile); th

呈现文件的第一个组件选择html

当我点击浏览按钮时,我重定向到另一个组件Fileselect组件,它是第二个组件
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。希望它能起作用。:)