在表单提交期间控制 init() 子组件

问题描述 投票:0回答:1

我正在 Angular 项目中工作来生成 pdf。 在这里,我使用

<app-pagedesign>
作为
<app-root>
的子组件,其中产品列表在此处提交。提交表格后会生成 pdf 文件。 一切正常。但是,当我单击“联系”并返回“产品”链接时,会生成 pdf 文件,而无需提供任何输入。 IE。它采用之前提交的值。 我认为这是由于子组件的初始化造成的。但我无法解决这个问题。有人可以帮我解决这个问题吗? enter image description here

我的 stackblitz 链接是 https://stackblitz.com/github/reegan2024/mygithubrepo?file=README.md

angular
1个回答
0
投票

不要使用

BehaviorSubject
,而是选择
Subject

区别在于,产品组件被破坏(导航到联系人),当返回产品组件时,

ngOnInit
会触发。

在此,我们订阅了

BehaviorSubject
,与
Subject
相比,其特殊之处在于它在最初订阅时触发。因此,当产品组件初始化时,会触发打印代码。

这不会第一次发生,因为

BehaviorSubject
的服务值在屏幕加载时为空字符串,并且 if 条件阻止打印,但是在使用
product component
设置并再次访问它时,它有一个值并执行代码,因此是错误。

export class PdfcontentService {
  constructor() {}
  public pdfContentSource = new Subject<any>(); // <- changed here!

Stackblitz 演示

© www.soinside.com 2019 - 2024. All rights reserved.