Как зарегистрировать пользовательскую PositionStrategy из @angular/cdk/overlays

Вот этот пример: https://plnkr.co/edit/KssNGRhyLRbRzEN59P4C?p=preview

Он использует @ угловой / материал MdMenu и использует ConnectedPositionStrategy от @angular/cdk/overlays

let originWithFallbackPosition = ConnectedPositionStrategy.prototype.withFallbackPosition;

ConnectedPositionStrategy.prototype.withFallbackPosition = function (originPos, overlayPos) {
    overlayPos.overlayX = 'start';
    if(this._preferredPositions.length) {
       return this;
    }
    return originWithFallbackPosition.apply(this, arguments);
};

Но это меняет прототип, я бы вместо этого хотел использовать наследование:

export class MultiMenuPositionStrategy extends ConnectedPositionStrategy {
     public withFallbackPosition(originPos: OriginConnectionPosition, overlayPos: OverlayConnectionPosition) {
         overlayPos.overlayX = 'start';
         if(this._preferredPositions.length) {
             return this;
         }
         return super.withFallbackPosition(originPos, overlayPos);
     } 
 } 

Но тогда как мне зарегистрировать этот класс для использования в этом меню? Я не вижу каких-либо методов в API для регистрации этого пользовательского PositionStrategy, и использование провайдеров NgModule не работает.

0 ответов

Другие вопросы по тегам