angular - 如何通过 Angular 6 中的服务将对象发送到不相关的组件?
问题描述
所以我是 Angular 的新手,我正在尝试使用服务将一个对象从 component1 发送到 component2。当我在组件 2 中将结果记录到控制台时,它没有给我对象的更新值,这可能是因为服务在第二个组件中重新初始化。你能帮忙解决这个问题吗?
这是我的代码
@Injectable({
providedIn: 'root'
})
export class CodeServiceService {
codeInfo:Code={
name:"",
text:"",
type:0
};
getCode(){
console.log(this.codeInfo);
return this.codeInfo;
}
setCode(result:Code){
this.codeInfo=result;
}
}
组件1
@Component({
selector: 'app-newscan',
templateUrl: './newscan.component.html',
styleUrls: ['./newscan.component.css'],
providers:[CodeServiceService]
})
export class NewscanComponent implements OnInit {
scannedCode:Code={
name:"name",
text:"text",
type:1
};
constructor(private service:CodeServiceService){}
saveInfo(){
this.service.setCode(this.scannedCode);
}
}
组件2
@Component({
selector: 'app-scan-list',
templateUrl: './scan-list.component.html',
styleUrls: ['./scan-list.component.css'],
providers:[CodeServiceService]
})
export class ScanListComponent implements OnInit {
newcode:Code={
name:"",
text:"",
type:0
};
constructor(private service:CodeServiceService){
}
ngOnInit(){
this.newcode=this.service.getCode();
console.log(this.newcode);
}
}
解决方案
这是因为你在使用
providers:[CodeServiceService]
在这两个组件中,因此它为两个组件创建了新的服务实例。
用于providers:[CodeServiceService]
_app.module.ts
@NgModule({
// ..... imports
providers:[CodeServiceService]
//..
})
在 Angular 6 中:
您可以使用下面的代码 in service.ts
,而不是添加 inapp.module.ts
@Injectable({
providedIn: 'root',
})
推荐阅读
- javascript - 如何在 React 中将按钮的 onClick 事件设置为多个功能(取决于道具)?
- javascript - 古腾堡核心块 - 删除选项
- prometheus - 如何在 PromQL 中获得两个指标中的最小值?
- php - PHP foreach 循环在从 SQL 解析数据时意外停止
- c++ - 在线程内打印到 std::cout 使它们运行得更快
- javascript - 当元素进入视野时运行关键帧动画的好方法?
- r - 在多列上调用 dplyr::count 并以长格式 tibble 返回结果
- javascript - 如何从表单中获取所有选中的元素?
- flutter - 小部件不根据区域设置语言更改更新方向 - 颤振
- django-rest-framework - 试图为dict创建对象,