我目前使用 WebStorm 作为 IDE,我的项目使用 pm2 作为流程管理器。我的生态系统的结构如下:
module.exports = {
name: 'myProject',
cwd: __dirname,
script: 'npm',
args: 'run start:debug',
};
Run Code Online (Sandbox Code Playgroud)
它执行
"start:debug": "nodemon --config nodemon-debug.json"
Run Code Online (Sandbox Code Playgroud)
项目一启动,终端就会抛出:
Debugger listening on ws://127.0.0.1:9229/24bd6549-1601-4b0d-9e36-495765176abc
For help, see: https://nodejs.org/en/docs/inspector
Run Code Online (Sandbox Code Playgroud)
然后,我按 WebStorm 中的“调试”按钮并进行以下配置:
之后,终端显示此内容并且项目在没有调试器的情况下启动:
Debugger listening on ws://127.0.0.1:9229/24bd6549-1601-4b0d-9e36-495765176abc
For help, see: https://nodejs.org/en/docs/inspector
Debugger attached.
Debugger ending on ws://127.0.0.1:9229/24bd6549-1601-4b0d-9e36-495765176abc
For help, see: https://nodejs.org/en/docs/inspector
Run Code Online (Sandbox Code Playgroud)
我的节点版本:
nvm current -> v14.20.1
Run Code Online (Sandbox Code Playgroud)
昨天它运行良好,今天我打开我的电脑,它坏了,我的环境没有任何变化,我知道。
所以我有一个表单,其中仅当另一个控件有值时才需要一个控件,为此我创建了以下结构
profileGroup = this.fb.group({
username: [''],
address: [
'',
[
(control: AbstractControl) => {
if (this.profileGroup?.get('username')?.value) {
return (Validators.required)(control);
}
return (Validators.nullValidator)(control);
},
],
],
Run Code Online (Sandbox Code Playgroud)
});
这个函数效果很好,一旦username 控件获得一个值,aValidators.required就会添加到address控件中。但是,尽管添加了验证器,但控件的有效性address并未更新,因此控件仍标记为valid。
如果可能的话我想避免使用类似的东西
this.profileGroup.get('username')?.valueChanges.subscribe(val=>{
this.profileGroup.get('address')?.updateValueAndValidity()
})
Run Code Online (Sandbox Code Playgroud)
因为可能存在我不知道名称的动态控件,并且不想为每个控件设置一个可观察对象。
这是一个工作示例的堆栈闪电战 https://stackblitz.com/edit/angular-10-formbuilder-example-m8qjq8?file=src/app/app.component.ts
formbuilder angular-validation angular angular-reactive-forms angular-validator