我有2种不同指令的反应形式。一种是字段级指令,该指令订阅ngSubmit并根据FormControl的无效状态控制显示在字段下方的字段级错误消息的可见性。另一个是在顶层添加的指令,该指令还将订阅ngSubmit,但如果视图中隐藏了无效字段,则滚动文档。
起初我以为我可以将第二条指令从第一条指令中删除,这意味着当ngSubmit发生时,字段级指令将执行并突出显示错误,然后第二条指令将知道错误位置(通过错误类进行简单的querySelector ),然后检查页面上仅有的错误是否从视图中隐藏。
但是,看起来像首先触发了表单级别指令ngSubmit订阅,这时还没有错误消息(它仍然显示:none)。那么问题-是否有可能以某种方式使第一个字段级别指令的ngSubmit订阅在第二个更高级别的代码之前触发?
另一种方法涉及更多,因为它要求scroll into view指令独立工作,检查整个Form控件图中是否有无效控件,并找到关联的包含div,然后检查它们是否被隐藏。
答案 0 :(得分:1)
那么问题-是否有可能以某种方式启用第一个字段级别 指令的ngSubmit订阅在第二个更高的级别之前触发 一级?
我想您无法控制ngSubmit订阅的流程,但是您可以拥有1 BehaviorSubject变量并在“第二个ngSubmit”中对其进行订阅(因此基本上您不会在那儿进行任何操作),然后您将从结尾的“第一个ngSubmit”发出(.next(true))真值,然后在subscribe {}块中,您将执行想要在结尾处执行的所需操作。