有没有办法更新Validtors
FormControl对象?我有FormGroup
一个输入是一个选择字段,当选择字段的值更改时,我希望我的FormGroup中的另一个FormControl更改验证器.
这是我的subscribeToFormChanges()
FormGroup组件的方法:
private appIdRegexes = {
ios: /^[a-zA-Z][a-zA-Z0-9]*(\.[a-zA-Z0-9\-]+){2,}$/,
android: /^([a-zA-Z])[a-zA-Z0-9_]*(\.[a-zA-Z][a-zA-Z0-9\-]*){2,}$/,
any: /^any$/
};
private subscribeToFormChanges(): void {
const myFormValueChanges$ = this.appsForm.valueChanges;
myFormValueChanges$.subscribe(x => {
const platform = this.appsForm.controls['platform'].value;
const appId = this.appsForm.controls['appId'].value;
if (this.appIdRegexes[platform]) {
this.appsForm.controls['appId'] = new FormControl(appId, Validators.pattern(this.appIdRegexes[platform].source));
}
});
}
Run Code Online (Sandbox Code Playgroud)
这是html模板:
<div class="row" [formGroup]="appsForm">
<div class="form-group col-xs-6">
<label>Platform</label>
<select id="licensePlatform" class="form-control"
formControlName="platform">
<option *ngFor="let platform of licensePlatforms" [value]="platform">
{{platform}}
</option>
</select>
<small [hidden]="appsForm.controls.platform.valid">
Platform is required
</small>
</div>
<div class="form-goup col-xs-6"> …
Run Code Online (Sandbox Code Playgroud) 我有一个名为的模块map-creation.service.ts
:
export const createMap = (asyncJobId: string, resourceUrl: string, s3DestFolder: string) => {
};
Run Code Online (Sandbox Code Playgroud)
在我的端点中使用了哪个:
import {createMap} from './services/map-creation.service';
const router = express.Router();
const routePrefix = config.get('server.routePrefix');
router.post(`/${routePrefix}`, validate(validation), (req: express.Request, res: express.Response) => {
createMap(req.body.asyncJobId, req.body.resourceUrl, req.body.s3DestFolder);
res.status(201).json({message: 'Created'});
});
Run Code Online (Sandbox Code Playgroud)
当我尝试在测试中模拟该模块,并想测试在请求端点时是否调用了该模块时,我仍然得到: Expected mock function to have been called with: ... But it was not called.
jest.mock('../../../src/services/map-creation.service');
import {createMap} from '../../../src/services/map-creation.service';
Run Code Online (Sandbox Code Playgroud)
这是我的测试:
it('should call the map-creation service', () => {
return request(server)
.post(`/${routePrefix}`)
.send({
asyncJobId,
resourceUrl,
s3DestFolder
}) …
Run Code Online (Sandbox Code Playgroud)