Как зарегистрировать пользовательскую 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 не работает.