/** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ export interface Entry { value?: FormValue; } /** * A convenience class for preserving unsaved form state while an edit lens is closed. * * Example usage: * class MyComponent { * readonly nameEditValues = new FormValueContainer<Item, {name: string}>(); * } * * <form cdkEditControl [(cdkEditControlPreservedFormValue)]="nameEditValues.for(item).value"> */ export class FormValueContainer { private _formValues = new WeakMap>(); for(key: Key): Entry { const _formValues = this._formValues; let entry = _formValues.get(key); if (!entry) { // Expose entry as an object so that we can [(two-way)] bind to its value member entry = {}; _formValues.set(key, entry); } return entry; } }