-import {Directive, Host, Input, OnInit, ViewChildren, QueryList, AfterViewInit} from '@angular/core';
+import {Directive, Host, Input, OnInit, AfterViewInit} from '@angular/core';
import {MarcSimplifiedEditorComponent} from './simplified-editor.component';
import {MarcField, MarcSubfield} from '../marcrecord';
import {MarcSimplifiedEditorSubfieldDirective} from './simplified-editor-subfield.directive';
@Input() ind1 = ' ';
@Input() ind2 = ' ';
- @ViewChildren(MarcSimplifiedEditorSubfieldDirective)
- subfields: QueryList<MarcSimplifiedEditorSubfieldDirective>;
+ subfieldIndex = 1;
marcVersion: MarcField;
+ addSubfield: (code: string, defaultValue?: string) => void;
+
constructor(@Host() private editor: MarcSimplifiedEditorComponent) {}
ngOnInit() {
indicator: (ind: number) => (ind === 1) ? this.ind1 : this.ind2,
deleteExactSubfields: (...subfield: MarcSubfield[]) => 0, // not used by the simplified editor
};
- }
- ngAfterViewInit() {
- this.subfields.forEach((subfield: MarcSimplifiedEditorSubfieldDirective, index: number) => {
+ this.addSubfield = (code: string, defaultValue?: string) => {
this.marcVersion.subfields.push(
[
- subfield.code,
- subfield.defaultValue ? subfield.defaultValue : '',
- index
+ code,
+ defaultValue ? defaultValue : '',
+ this.subfieldIndex
]
);
- });
+ this.subfieldIndex += 1;
+
+ }
+ }
+
+ ngAfterViewInit() {
this.editor.addField(this.marcVersion);
}
-import {Directive, Input} from '@angular/core';
+import {Directive, Input, Host, OnInit} from '@angular/core';
+import {MarcSimplifiedEditorFieldDirective} from './simplified-editor-field.directive';
/**
* A subfield that a user can edit, which will later be
@Directive({
selector: 'eg-marc-simplified-editor-subfield',
})
-export class MarcSimplifiedEditorSubfieldDirective {
+export class MarcSimplifiedEditorSubfieldDirective implements OnInit {
@Input() code: string;
@Input() defaultValue: string;
+ constructor(@Host() private field: MarcSimplifiedEditorFieldDirective) {}
+
+ ngOnInit() {
+ this.field.addSubfield(this.code, this.defaultValue);
+ }
+
}