1 import { Component, Input, OnInit } from '@angular/core';
2 import { AbstractControl, ControlContainer, FormBuilder, FormControl, FormGroup, FormGroupDirective, ValidatorFn, Validators } from '@angular/forms';
5 selector: 'nrcp-no-type-policy-editor',
6 templateUrl: './no-type-policy-editor.component.html',
7 styleUrls: ['./no-type-policy-editor.component.scss'],
8 viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }]
10 export class NoTypePolicyEditorComponent implements OnInit {
12 @Input() instanceForm: FormGroup;
13 @Input() policyJson: string;
16 private formBuilder: FormBuilder) { }
19 this.instanceForm.addControl(
20 'policyJsonTextArea', new FormControl(this.policyJson, [
27 get policyJsonTextArea(): AbstractControl {
28 return this.instanceForm ? this.instanceForm.get('policyJsonTextArea') : null;
31 formatJsonInput(): void {
32 this.policyJson = formatJsonString(JSON.parse(this.policyJsonTextArea.value));
36 export function formatJsonString(jsonToFormat: any): string {
37 return JSON.stringify(jsonToFormat, null, 2);
40 export function jsonValidator(): ValidatorFn {
41 return (control: AbstractControl): { [key: string]: any } | null => {
42 const notValid = !isJsonValid(control.value);
43 return notValid ? { 'invalidJson': { value: control.value } } : null;
47 export function isJsonValid(json: string): boolean {