Uncaught TypeError: Невозможно прочитать свойство 'setsWith' из неопределенного в LayoutGapStyleBuilder.buildStyles

После обновления моего приложения Angular 8 до Angular 9 я получаю следующую ошибку в браузере для одного шаблона:

Uncaught TypeError: Cannot read property 'endsWith' of undefined
    at LayoutGapStyleBuilder.buildStyles (flex.js:233)
    at DefaultLayoutGapDirective.addStyles (core.js:492)
    at DefaultLayoutGapDirective.updateWithValue (flex.js:434)
    at MediaMarshaller.updateElement (core.js:3189)
    at SafeSubscriber._next (core.js:3294)
    at SafeSubscriber.__tryOrUnsub (Subscriber.js:183)
    at SafeSubscriber.next (Subscriber.js:122)
    at Subscriber._next (Subscriber.js:72)
    at Subscriber.next (Subscriber.js:49)
    at MergeMapSubscriber.notifyNext (mergeMap.js:72)
    at InnerSubscriber._next (InnerSubscriber.js:11)
    at InnerSubscriber.next (Subscriber.js:49)
    at Subject.next (Subject.js:39)
    at MutationObserver.<anonymous> (flex.js:493)
    at ZoneDelegate.invoke (zone-evergreen.js:365)

Всего 1 ответ


Чтобы поймать неопределенные значения разрыва макета, реализуйте специальный построитель разрыва макета, который переводит неопределенные значения разрыва, например:

import { Injectable, NgModule } from '@angular/core'
import {
  StyleBuilder,
  StyleDefinition,
  LayoutGapParent,
  LayoutGapStyleBuilder,
} from '@angular/flex-layout'

@Injectable()
export class CustomLayoutGapStyleBuilder extends LayoutGapStyleBuilder {
  buildStyles(gapValue: string, parent: LayoutGapParent): StyleDefinition {
      return super.buildStyles(gapValue || Ɔ px', parent);
  }

  sideEffect(gapValue, _styles, parent) {
      return super.sideEffect(gapValue || Ɔ px', _styles, parent);
  }

}

и сделайте его доступным для вашего приложения в @NgModule :

@NgModule({
  //...
  providers: [
    //...
    { provide: LayoutGapStyleBuilder, useClass: CustomLayoutGapStyleBuilder },
  ],
})

Есть идеи?

10000