src/core/src/classes/keyboard-ref.class.ts
        
Reference to a keyboard dispatched from the keyboard service.
| Properties | 
| 
 | 
| Methods | 
| constructor(instance: MatKeyboardComponent, containerInstance: MatKeyboardContainerComponent, _overlayRef: OverlayRef) | ||||||||||||
| 
                                    Parameters :
                                     
 | 
| Private _afterClosed | 
| _afterClosed:      | 
| Type : Subject<any> | 
| Default value : new Subject() | 
| Subject for notifying the user that the keyboard has closed. | 
| Private _afterOpened | 
| _afterOpened:      | 
| Type : Subject<any> | 
| Default value : new Subject() | 
| Subject for notifying the user that the keyboard has opened and appeared. | 
| containerInstance | 
| containerInstance:      | 
| Type : MatKeyboardContainerComponent | 
| The instance of the component making up the content of the keyboard. | 
| instance | 
| instance:      | 
| Type : MatKeyboardComponent | 
| The instance of the component making up the content of the keyboard. | 
| Private _finishDismiss | 
| _finishDismiss() | 
| Cleans up the DOM after closing. 
                                Returns :      void | 
| _open | 
| _open() | 
| Marks the keyboard as opened 
                                Returns :      void | 
| afterDismissed | 
| afterDismissed() | 
| Gets an observable that is notified when the keyboard is finished closing. 
                                Returns :      Observable<void> | 
| afterOpened | 
| afterOpened() | 
| Gets an observable that is notified when the keyboard has opened and appeared. 
                                Returns :      Observable<void> | 
| dismiss | 
| dismiss() | 
| Dismisses the keyboard. 
                                Returns :      void | 
import { OverlayRef } from '@angular/cdk/overlay';
import { Observable } from 'rxjs/Observable';
import { Subject } from 'rxjs/Subject';
import { MatKeyboardComponent } from '../components/keyboard/keyboard.component';
import { MatKeyboardContainerComponent } from '../components/keyboard-container/keyboard-container.component';
/**
 * Reference to a keyboard dispatched from the keyboard service.
 */
export class MatKeyboardRef<T> {
  /** Subject for notifying the user that the keyboard has closed. */
  private _afterClosed: Subject<any> = new Subject();
  /** Subject for notifying the user that the keyboard has opened and appeared. */
  private _afterOpened: Subject<any> = new Subject();
  /** The instance of the component making up the content of the keyboard. */
  instance: MatKeyboardComponent;
  /** The instance of the component making up the content of the keyboard. */
  containerInstance: MatKeyboardContainerComponent;
  constructor(instance: MatKeyboardComponent,
              containerInstance: MatKeyboardContainerComponent,
              private _overlayRef: OverlayRef) {
    // Sets the readonly instance of the keyboard content component.
    this.instance = instance;
    this.containerInstance = containerInstance;
    // Finish dismiss on exitting
    containerInstance.onExit.subscribe(() => this._finishDismiss());
  }
  /** Dismisses the keyboard. */
  dismiss() {
    if (!this._afterClosed.closed) {
      this.containerInstance.exit();
    }
  }
  /** Marks the keyboard as opened */
  _open() {
    if (!this._afterOpened.closed) {
      this._afterOpened.next();
      this._afterOpened.complete();
    }
  }
  /** Gets an observable that is notified when the keyboard is finished closing. */
  afterDismissed(): Observable<void> {
    return this._afterClosed.asObservable();
  }
  /** Gets an observable that is notified when the keyboard has opened and appeared. */
  afterOpened(): Observable<void> {
    return this.containerInstance.onEnter;
  }
  /** Cleans up the DOM after closing. */
  private _finishDismiss() {
    this._overlayRef.dispose();
    this._afterClosed.next();
    this._afterClosed.complete();
  }
}