title: Angular 2 Universal ng2-bootstrap not working Safari
body: <p>The website I created using Angular 2 together with ng2-bootstrap and serving using Webpack and Universal has been working on Chrome without a hitch, but doesn't work on Safari or Microsoft Edge.</p>
  <p>At the moment Safari is the most important.</p>
  <p>In the developer console I get the following errors:</p>
  <pre><code>[Error] EXCEPTION: Attempted to assign to readonly property.
      handleError
      next
      (anonymous function)
      __tryOrUnsub
      next
      _next
      next
      next
      emit
      onError
      onHandleError
      handleError (zone.js:207)
      runTask (zone.js:139)
      invoke (zone.js:304)
  [Error] ORIGINAL STACKTRACE:
      handleError
      next
      (anonymous function)
      __tryOrUnsub
      next
      _next
      next
      next
      emit
      onError
      onHandleError
      handleError (zone.js:207)
      runTask (zone.js:139)
      invoke (zone.js:304)
  [Error] setProperty
  setElementProperty
  detectChangesInternal
  detectChanges
  detectViewChildrenChanges
  detectChangesInternal
  detectChanges
  detectViewChildrenChanges
  detectChangesInternal
  detectChanges
  detectContentChildrenChanges
  detectChangesInternal
  detectChanges
  detectContentChildrenChanges
  detectChangesInternal
  detectChanges
  detectViewChildrenChanges
  detectChangesInternal
  detectChanges
  detectChanges
  
  forEach@[native code]
  tick
  
  invoke@http://localhost:3000/node_modules/zone.js/dist/zone.js:203:33
  onInvoke
  invoke@http://localhost:3000/node_modules/zone.js/dist/zone.js:202:42
  run@http://localhost:3000/node_modules/zone.js/dist/zone.js:96:49
  runInner
  run
  next
  
  __tryOrUnsub
  next
  _next
  next
  next
  emit
  _checkStable
  onLeave
  onInvokeTask
  invokeTask@http://localhost:3000/node_modules/zone.js/dist/zone.js:235:54
  runTask@http://localhost:3000/node_modules/zone.js/dist/zone.js:136:57
  invoke@http://localhost:3000/node_modules/zone.js/dist/zone.js:304:40
      handleError
      next
      (anonymous function)
      __tryOrUnsub
      next
      _next
      next
      next
      emit
      onError
      onHandleError
      handleError (zone.js:207)
      runTask (zone.js:139)
      invoke (zone.js:304)
  [Error] TypeError: Attempted to assign to readonly property.
      __tryOrUnsub
      next
      _next
      next
      next
      emit
      onError
      onHandleError
      handleError (zone.js:207)
      runTask (zone.js:139)
      invoke (zone.js:304)
  </code></pre>
  <p>This doesn't help me much as I can't find out what readonly property it is trying to assign something to.</p>
  <p>I will be posting my progress here as I find out more.</p>
  <h3>Update</h3>
  <p>I have updated to the latest Angular 2 2.1.0 versions but still no luck.</p>
  <p>I also read one another project that someone remove the &quot;use strict&quot;; from the project, this at at least loaded the page without any errors at all. However when I tried to click on a link the error came back.</p>
  <h3>Update</h3>
  <p>I finally found the actual line that is causing the error:</p>
  <pre><code>BrowserDomAdapter.prototype.setProperty = function(el, name, value) {
     el[name] = value
  };
  </code></pre>
  <p>Is there any possible way to figure out if a property is readonly or not before setting it?</p>
  <h3>Update</h3>
  <p>I think I got the one error fixed. Turned out in one of my components in the template I was assigning the style property which is readonly.</p>
  <p>So instead of <code>&lt;div [style]=&quot;getStyle()&quot;&gt;</code> I did <code>&lt;div [attr.style]=&quot;getStyle()&quot;&gt;</code> which stopped the TypeError from raising.</p>
  <p>However, now I have another error:</p>
  <pre><code>[Error] EXCEPTION: Can't find variable: Intl
      handleError (index.js:13885:260)
      next (index.js:8825:664)
      (anonymous function) (index.js:9320:555)
      __tryOrUnsub (index.js:980:1636)
      next (index.js:980:768)
      _next (index.js:975:294)
      next (index.js:962)
      next (index.js:1316:668)
      emit (index.js:9320:179)
      onError (index.js:9572:261)
      onHandleError (index.js:20269:272)
      handleError (index.js:27565:6501)
      runTask (index.js:27565:3198)
      invoke (index.js:27567:1047)
  [Error] ORIGINAL STACKTRACE:
      handleError (index.js:13885:439)
      next (index.js:8825:664)
      (anonymous function) (index.js:9320:555)
      __tryOrUnsub (index.js:980:1636)
      next (index.js:980:768)
      _next (index.js:975:294)
      next (index.js:962)
      next (index.js:1316:668)
      emit (index.js:9320:179)
      onError (index.js:9572:261)
      onHandleError (index.js:20269:272)
      handleError (index.js:27565:6501)
      runTask (index.js:27565:3198)
      invoke (index.js:27567:1047)
  [Error] intlDateFormat@http://localhost:3000/index.js:11996:633
  http://localhost:3000/index.js:12000:513
  http://localhost:3000/index.js:12000:1106
  forEach@[native code]
  dateFormatter@http://localhost:3000/index.js:12000:1057
  format@http://localhost:3000/index.js:12000:1448
  transform@http://localhost:3000/index.js:17986:940
  [native code]
  http://localhost:3000/index.js:6148:4063
  detectChangesInternal
  detectChanges@http://localhost:3000/index.js:19974:507
  detectContentChildrenChanges@http://localhost:3000/index.js:19977:438
  detectChangesInternal
  detectChanges@http://localhost:3000/index.js:19974:507
  detectContentChildrenChanges@http://localhost:3000/index.js:19977:438
  detectChangesInternal
  detectChanges@http://localhost:3000/index.js:19974:507
  detectViewChildrenChanges@http://localhost:3000/index.js:19977:724
  detectChangesInternal
  detectChanges@http://localhost:3000/index.js:19974:507
  detectViewChildrenChanges@http://localhost:3000/index.js:19977:724
  detectChangesInternal
  detectChanges@http://localhost:3000/index.js:19974:507
  detectContentChildrenChanges@http://localhost:3000/index.js:19977:438
  detectChangesInternal@http://localhost:3000/index.js:19977:98
  detectChanges@http://localhost:3000/index.js:19974:507
  detectContentChildrenChanges@http://localhost:3000/index.js:19977:438
  detectChangesInternal
  detectChanges@http://localhost:3000/index.js:19974:507
  detectViewChildrenChanges@http://localhost:3000/index.js:19977:724
  detectChangesInternal
  detectChanges@http://localhost:3000/index.js:19974:507
  detectChanges@http://localhost:3000/index.js:14295:1477
  http://localhost:3000/index.js:8848:612
  forEach@[native code]
  tick@http://localhost:3000/index.js:8848:563
  http://localhost:3000/index.js:8844:973
  invoke@http://localhost:3000/index.js:27565:6355
  onInvoke@http://localhost:3000/index.js:20266:1016
  invoke@http://localhost:3000/index.js:27565:6265
  run@http://localhost:3000/index.js:27565:2197
  runInner@http://localhost:3000/index.js:20269:446
  run@http://localhost:3000/index.js:9613:65
  next@http://localhost:3000/index.js:8844:951
  http://localhost:3000/index.js:9320:554
  __tryOrUnsub@http://localhost:3000/index.js:980:1635
  next@http://localhost:3000/index.js:980:767
  _next@http://localhost:3000/index.js:975:293
  next@http://localhost:3000/index.js:962:73
  next@http://localhost:3000/index.js:1316:667
  emit@http://localhost:3000/index.js:9320:178
  _checkStable@http://localhost:3000/index.js:9574:44
  onLeave@http://localhost:3000/index.js:9572:19
  onInvokeTask@http://localhost:3000/index.js:20266:890
  invokeTask@http://localhost:3000/index.js:27565:7121
  runTask@http://localhost:3000/index.js:27565:3119
  invoke@http://localhost:3000/index.js:27567:1046
      handleError (index.js:13885:483)
      next (index.js:8825:664)
      (anonymous function) (index.js:9320:555)
      __tryOrUnsub (index.js:980:1636)
      next (index.js:980:768)
      _next (index.js:975:294)
      next (index.js:962)
      next (index.js:1316:668)
      emit (index.js:9320:179)
      onError (index.js:9572:261)
      onHandleError (index.js:20269:272)
      handleError (index.js:27565:6501)
      runTask (index.js:27565:3198)
      invoke (index.js:27567:1047)
  [Error] ReferenceError: Can't find variable: Intl
      __tryOrUnsub (index.js:980:1697)
      next (index.js:980:768)
      _next (index.js:975:294)
      next (index.js:962)
      next (index.js:1316:668)
      emit (index.js:9320:179)
      onError (index.js:9572:261)
      onHandleError (index.js:20269:272)
      handleError (index.js:27565:6501)
      runTask (index.js:27565:3198)
      invoke (index.js:27567:1047)
  </code></pre>
  <p>Turns out it is in Angular's common/bundles/common.umd.js, but it is undefined in Safari. Any ideas?</p>