Angular 为什么我的数据在组件之间没有正确绑定?

Angular 为什么我的数据在组件之间没有正确绑定?,angular,Angular,映射.component.ts将标题、映射项和显示列发送到要显示的摘要.component.ts 问题是title和displayedColumns工作正常,但我不太确定mapItems为什么工作不正常,它没有显示出来 如果我将displayedColumns和mapItems移动到订阅块外部,则表将正确显示(对于这两个数据),但在订阅块内部,只有显示的列被正确传递。所以我想这里发生了一些我不太确定的事情 注意:我的控制台日志中没有收到任何错误消息 编辑:我使用ELEMENT_数据作为初始测试,

映射.component.ts
标题
映射项
显示列
发送到要显示的
摘要.component.ts

问题是
title
displayedColumns
工作正常,但我不太确定
mapItems
为什么工作不正常,它没有显示出来

如果我将
displayedColumns
mapItems
移动到订阅块外部,则表将正确显示(对于这两个数据),但在订阅块内部,只有
显示的列
被正确传递。所以我想这里发生了一些我不太确定的事情

注意:我的控制台日志中没有收到任何错误消息

编辑:我使用ELEMENT_数据作为初始测试,最终我希望从get方法传递数据

最终编辑:答案已解决,请看下面我的答案。问题在于数据源

maps.component.ts

从'@angular/core'导入{Component,OnInit,ViewChild};
从'@angular/material/paginator'导入{MatPaginator};
从“@angular/material/table”导入{MatTableDataSource};
从“../services/config.service”导入{ConfigService};
导出接口周期元素{
名称:字符串;
职位:编号;
重量:个数;
符号:字符串;
}
常量元素_数据:PeriodiceElement[]=[
{位置:1,名称:'Hydrogen',重量:1.0079,符号:'H'},
{位置:2,名称:'氦',重量:4.0026,符号:'他'},
{位置:3,名称:'锂',重量:6.941,符号:'锂'},
{位置:4,名称:'铍',重量:9.0122,符号:'铍'},
{位置:5,名称:'硼',重量:10.811,符号:'B'},
{位置:6,名称:'Carbon',重量:12.0107,符号:'C'},
{位置:7,名称:'N',重量:14.0067,符号:'N'},
{位置:8,名称:'氧气',重量:15.9994,符号:'O'},
{位置:9,名称:'氟',重量:18.9984,符号:'F'},
{位置:10,名称:'Neon',重量:20.1797,符号:'Ne'},
];
@组成部分({
选择器:“应用程序地图”,
templateUrl:'./maps.component.html',
样式URL:['./maps.component.css']
})
导出类MapsComponent实现OnInit{
标题=‘地图’;
地图数据;
mapItems:JSON[];
错误:错误;
displayedColumns:字符串[];
构造函数(私有configService:configService){}
恩戈尼尼特(){
this.displayedColumns=[];
this.configService.getMaps().subscribe((数据)=>{
此.mapData={
阿塞蒂德:“你好”
};
this.displayedColumns=[“位置”、“名称”、“重量”、“您好];
this.mapItems=JSON.parse(JSON.stringify(ELEMENT_DATA));
},error=>this.error);
}
}
maps.component.html


只有当
configService.getMaps
返回的可观测值发出值时,才初始化属性
displayedColumns
。我想这不会发生。是否在任何地方调用
configService.getMaps.emit({})
anywhere?

只有当
configService.getMaps
返回的可观察值发出值时,才会初始化属性
displayedColumns
。我想这不会发生。您是否在任何地方调用
configService.getMaps.emit({})
subscribe方法中的displayedColumns?

而不是初始化它,同时声明:-

displayedColumns: string[] = ["position", "name", 'weight', 'hello']; 

不要在subscribe方法中初始化displayedColumns,而是在声明以下内容时对其进行初始化:-

displayedColumns: string[] = ["position", "name", 'weight', 'hello']; 

我已经解决了这个问题。问题在于我设置
数据源的方式。我意识到我没有将其添加到代码中,但我正在使用
this.dataSource=this.items
ngOnInit()
中设置其值


问题是这种情况只发生一次,我错误地认为数据绑定会立即更新依赖于数据绑定值的其他函数/变量。因此,我通过让我的
maps.component.ts
在订阅块中将
dataSource=this.mapItems
传递到
summary.component.ts
,解决了我的解决方案

我已经解决了这个问题。问题在于我设置
数据源的方式。我意识到我没有将其添加到代码中,但我正在使用
this.dataSource=this.items
ngOnInit()
中设置其值


问题是这种情况只发生一次,我错误地认为数据绑定会立即更新依赖于数据绑定值的其他函数/变量。因此,我通过让我的
maps.component.ts
在订阅块中将
dataSource=this.mapItems
传递到
summary.component.ts
,解决了我的解决方案

很抱歉,我犯了一个错误<代码>显示的列
工作正常,但
(由
mapItems设置)不工作。如果问题仍然相同,我不会在任何地方使用emit()。不过这很奇怪,因为
displayedColumns
正在工作,所以observable必须发出一些东西(我已经通过更改
displayedColumns
中的值并在网站上检查更改来测试它)。但是奇怪的是,一个正在工作的
mapItems
却没有。然后添加
SummaryComponent
一个临时的
ngOnChanges
方法,并在那里和subscribe some
控制台中添加。log
以显示值。我已经尝试了这个方法,但没有任何日志记录。但是,我可以验证
this.mapItems
是否在代码行之后通过
console.log
检索到了正确的值。很抱歉,我犯了一个错误<代码>显示的列
工作正常,但
(由
mapItems设置)不工作。如果问题仍然相同,我不会在任何地方使用emit()。不过这很奇怪,因为
displayedColumns
正在工作,所以observative必须发出一些东西(我已经通过更改
displayedColumns
中的值并检查c来测试它)