Чаще всего я вижу, что ваш @Input
доступен только для чтения, поэтому свойство родителя остается неизменным.
Если имеет смысл работать с копией @Input
для вас, это означает, что вы хотите изменить значение только внутри дочернего компонента, и все изменения не затронут родительский элемент.
Использование вывода, когда вам нужно изменить объект и сохранение его в родительском компоненте, является подходом (который для меня лучше), но я использую двухстороннее связывание, а не ведение с обратным вызовом. [ +1117]
В вашем примере, если вам нужно свойство @input
, в котором вы изменяете его значение в дочернем компоненте и оно изменяет свойство отца, вы должны рассмотреть возможность двусторонней привязки BANANA IN A BOX
, так что ваш код должен выглядеть следующим образом:
class ChildComponent {
@Input() parentParam;
@Output() parentParamChange = new EventEmitter(); // <- this EventEmitter must have the parentParam type.
let parentParamClone = Object.assign({}, parentParam);
childClickEvent(val) {
//Inform parent & let it do necessary change, when you
// update the parent's value, it will be reflected in this component.
this.parentParamChange.emit(val);
}
И вы должны использовать этот способ и шаблон HTML:
...
[(parentParam)]="propertyYouArePassingHere"
...
вместо
...
[parentParam]="propertyYouArePassingHere"
(clickValEvent)="captureOutputCallback()"
...
Примечание: Чтобы это работало, у вас должно быть имя выхода, следующее за этим шаблоном: inputThatYouWantMakeTwoWayBindName
+ Change
, поэтому я переименовал ваш вывод в parentParamChange
.
:vertical
(vert
) работы:
:vert help
можно также управлять, разделяет ли окно на левом/главном или праве/нижней части с topleft
(to
) и botright
(bo
) . Например, для открытия справки в правильном окне вертикального разделения:
:vert bo help
Эта команда должна сделать это:
:vert help
Динамично откройте окна справки наверху, если существует больше чем одно окно на текущей вкладке, или справа, если существует только одно окно:
if winnr(' необходимо будет поместить это в ftplugin/help.vim
или использовать его с autocmd
, например:
augroup my_filetype_settings
autocmd!
autocmd FileType help if winnr(') > 2 | wincmd K | else | wincmd L | endif
augroup END
) > 2
wincmd K
else
wincmd L
endif
необходимо будет поместить это в ftplugin/help.vim
или использовать его с autocmd
, например:
augroup my_filetype_settings
autocmd!
autocmd FileType help if winnr(') > 2 | wincmd K | else | wincmd L | endif
augroup END