title: Can't add property _$visited, object is not extensible using primeNG, angular 2 and @ngrx
body: <p><strong>USE CASE</strong></p>
  
  <p>Learning Angular 2 and working in a personal project. I have datatable from PrimeNg and I would like to allow selection on it.
  Using redux implementation  ngrx, my datas come from the store and display well in the datatable. But I get errors when I do selection on it.
  I suspected the 2 way-binding [(selection)] from the datatable component but I still get error even with only one way [selection].
  Do you guys have any idea how to stop event propagation in angular 2, especially event generated by primeng framework?</p>
  
  <p>When debugging, I can see the format of this event object, how can I stop the event propagation?</p>
  
  <pre><code>data:Object
  originalEvent:Object
  checked:true
  originalEvent:MouseEvent
  __proto__:Object
  type:"checkbox"
  __proto__:Object
  </code></pre>
  
  <p><strong>ERROR</strong></p>
  
  <pre><code>core.umd.js?e2a5:3010 TypeError: Can't add property _$visited, object is not extensible
      at DomHandler.equals (eval at &lt;anonymous&gt; (http://localhost:8080/vendor.js:578:2), &lt;anonymous&gt;:254:28)
      at DataTable.isSelected (eval at &lt;anonymous&gt; (http://localhost:8080/vendor.js:656:2), &lt;anonymous&gt;:600:45)
      at _View_DataTable50.detectChangesInternal (/DataTableModule/DataTable/component.ngfactory.js:4074:198)
      at _View_DataTable50.AppView.detectChanges (eval at &lt;anonymous&gt; (http://localhost:8080/vendor.js:100:2), &lt;anonymous&gt;:9305:18)
      at _View_DataTable50.DebugAppView.detectChanges (eval at &lt;anonymous&gt; (http://localhost:8080/vendor.js:100:2), &lt;anonymous&gt;:9410:48)
      at _View_DataTable49.AppView.detectContentChildrenChanges (eval at &lt;anonymous&gt; (http://localhost:8080/vendor.js:100:2), &lt;anonymous&gt;:9323:23)
      at _View_DataTable49.detectChangesInternal (/DataTableModule/DataTable/component.ngfactory.js:3962:8)
      at _View_DataTable49.AppView.detectChanges (eval at &lt;anonymous&gt; (http://localhost:8080/vendor.js:100:2), &lt;anonymous&gt;:9305:18)
      at _View_DataTable49.DebugAppView.detectChanges (eval at &lt;anonymous&gt; (http://localhost:8080/vendor.js:100:2), &lt;anonymous&gt;:9410:48)
      at _View_DataTable0.AppView.detectContentChildrenChanges (eval at &lt;anonymous&gt; (http://localhost:8080/vendor.js:100:2), &lt;anonymous&gt;:9323:23)
      at _View_DataTable0.detectChangesInternal (/DataTableModule/DataTable/component.ngfactory.js:201:8)
      at _View_DataTable0.AppView.detectChanges (eval at &lt;anonymous&gt; (http://localhost:8080/vendor.js:100:2), &lt;anonymous&gt;:9305:18)
      at _View_DataTable0.DebugAppView.detectChanges (eval at &lt;anonymous&gt; (http://localhost:8080/vendor.js:100:2), &lt;anonymous&gt;:9410:48)
      at _View_FinancialaccountbookComponent0.AppView.detectViewChildrenChanges (eval at &lt;anonymous&gt; (http://localhost:8080/vendor.js:100:2), &lt;anonymous&gt;:9331:23)
      at _View_FinancialaccountbookComponent0.detectChangesInternal (/AccountbookModule/FinancialaccountbookComponent/component.ngfactory.js:305:8)
      at _View_FinancialaccountbookComponent0.AppView.detectChanges (eval at &lt;anonymous&gt; (http://localhost:8080/vendor.js:100:2), &lt;anonymous&gt;:9305:18)
  </code></pre>
  
  <p><strong>DATABLE HTML</strong></p>
  
  <pre><code>  &lt;p-dataTable [value]="flows$ | async" sortMode="multiple" scrollable="true" scrollHeight="500px" [(selection)]="selectedFlows$ | async"
          scrollWidth="100%" [style]="{'margin-top':'30px', 'box-shadow': '2px 2px 5px grey'}" [responsive]="true" [styleClass]="shaddow-effect"
          (selectionChange)="selectionChange($event)"&gt;
          &lt;p-column [style]="{'width':'38px'}" selectionMode="multiple"&gt;&lt;/p-column&gt;
          &lt;p-column *ngFor="let col of cols" [field]="col.field" [header]="col.header" [sortable]="true"&gt;&lt;/p-column&gt;
          &lt;footer&gt;
              &lt;ul&gt;
                  &lt;li *ngFor="let flow of selectedFlows$ | async" style="text-align: left"&gt;{{flow.id + ' - ' + flow.date + ' - ' + flow.payee + ' - ' + flow.category}}&lt;/li&gt;
              &lt;/ul&gt;
          &lt;/footer&gt;
      &lt;/p-dataTable&gt;
  </code></pre>
  
  <p><strong>DATABLE TS</strong></p>
  
  <pre><code>@Component({
      selector: 'financialaccountbook',
      templateUrl: './financial-accountbook.component.html',
      changeDetection: ChangeDetectionStrategy.OnPush,
      providers: [FinancialflowService]
  })
  export class FinancialaccountbookComponent implements OnInit {
  
      cols: any[];
      flows$: Observable&lt;FLOW[]&gt;;
      flows:FLOW[];
      selectedFlows$: Observable&lt;FLOW[]&gt;;
      selectedFlows:FLOW[];
      nonselected: boolean;
      msgs: Message[];
      changeLog: string[] = [];
  
  
      constructor(private store: Store&lt;fromRoot.State&gt;, private financialflowService: FinancialflowService) { 
          this.flows$ = this.store.let(fromRoot.getFLows);
          this.selectedFlows$ = this.store.let(fromRoot.getSelectedFlows);
  
          // subscribe
          this.flows$.subscribe(v_flows=&gt;this.flows = v_flows);
          this.selectedFlows$.subscribe(selectedflows =&gt; this.selectedFlows = selectedflows);
  
      }
  
  
      isFlowsSelected(): boolean {
          return (this.selectedFlows$) ? true : false;
  
      }
  
      selectionChange(selectedflows:FLOW[])
      {
           console.log(selectedflows);
          this.store.dispatch(new Actions.SelectAction(selectedflows.map(flow=&gt;flow.id.toString())));
      }
  
  
      ngOnInit() {
          // fetch columns
          this.cols = FINANCIAL_FLOWS_COLS;
          // load flows
          this.loadFlows();
  
      console.log(this.selectedFlows);
      console.log(this.flows);
    //  this.flows$.subscribe(flows =&gt; console.log(flows));
      }
      loadFlows() {
          this.store.dispatch(new Actions.LoadAction());
      }
  
  
  
  }
  </code></pre>