В angular, при добавлении дочернего компонента, нужно ли отображать все дочерние выходные переменные? - PullRequest
0 голосов
/ 05 декабря 2018

Пример: родительский -----

@Component({
    selector: 'parent',
    template: `<div> Test
                   <child [modal] = "parentModal"
                          (change) = "onChange($event)">
                   </child>
                </div>`
})

export class ParentComponent {
    parentModal;

    ngOnInit() {
        this.parentModal = "I am Parent";
    }

    onChange(event) {
        console.log(event);
    }

}

дочерний -----

@Component({
     selector: 'child',
     template: `<div>
                    {{modal}}
                    <a (click)="emitClick()"></a>
                </div>`
})

export class ChildComponent {
    @Input modal;
    @Output change;
    @Output open;


    emitClick() {
        this.change.emit();
    }
}

Мой код может иметь неправильный синтаксис.Пожалуйста, исправьте его, если найдете.

Мой вопрос:

Как видите, родитель не передает Open параметр child.Приведет ли это к ошибке при вызове функции emitClick при нажатии на тег A?

1 Ответ

0 голосов
/ 05 декабря 2018

Long Story Short, Нет, ты не знаешь.Но ваш код должен быть:

родитель:

@Component({
    selector: 'parent',
    template: `<div> Test
                   <child [modal] = "parentModal"
                          (change) = "onChange($event)">
                   </child>
                </div>`
})

export class ParentComponent implements OnInit {
    public parentModal = "I am Parent";

    ngOnInit() {

    }

    onChange(event) {
        console.log(event);
    }

}

child

@Component({
     selector: 'child',
     template: `<div>
                    {{modal}}
                    <a (click)="emitClick()"></a>
                </div>`
})

export class ChildComponent {
    @Input() modal: string = '';
    @Output() change = new EventEmitter<string>();
    @Output() open= new EventEmitter<void>();


    emitClick() {
        this.change.emit('change');
    }
}
...