2016-11-14 43 views
0

我正在使用angular2打字稿。無法執行'元素'上的'setAttribute':'(click)'不是有效的屬性名稱

內部ngOnInit我初始化一個jstree pluging。

jQuery('#data').jstree({ 
    'core': { 
     "check_callback": true, 
     "themes": { "stripes": true }, 

     'data': d 

    } 
}) 

這個插件正在建立菜單樹(li a)動態地使用json字符串。

插件可以組屬性使用這樣

object= { 
       text: dataObject.partner_company_name, 
       icon: "", 
       state: { 
        'opened': true, 
        selected: false 
       }, 
       id: dataObject.partner_company_name, 
       children: [], 
       a_attr:{"(click)":"redirectToComponent","userid":userid,'level':'2'} 
      } 

的JSON當在錨定用戶點擊他高度重視和navigte對用戶ID和水平其它部件基部錨定。

顯然我不能動態地設置angular2點擊,那麼如何才能完成任務並將用戶導航到基於其他屬性的正確組件呢?

這是我的組件

import { Component } from '@angular/core'; 
    import {CookieService} from 'angular2-cookie/core'; 
    import {ViewEncapsulation} from '@angular/core'; 
    import { Observable }  from 'rxjs/Observable'; 
    import { MainService } from './main.service'; 
    import { Router } from '@angular/router'; 
    declare var jQuery:any; 


    @Component({ 
     selector: 'ff-ff', 
     templateUrl:'app/main/master.component.html', 
      encapsulation: ViewEncapsulation.None, 
      styleUrls: ['app/css/bootstrap-3.3.7-dist/css/bootstrap.min.css','app/main/master.component.css'] 
    }) 
    export class MasterComponent { 
     constructor(private _cookieService:CookieService,private LogService:MainService,protected router: Router){} 

     ngOnInit(): void { 


    jQuery('#data').jstree({ 
     'core': { 
      "check_callback": true, 
      "themes": { "stripes": true }, 
      'data': [ 
      { 
        text: 111, 
        icon: "", 
        state: { 
         'opened': true, 
         selected: false 
        }, 
        id: dataObject.partner_company_name, 
        children: [], 
        a_attr:{"(click)":"redirectToComponent","userid":userid,'level':'2'} 
       }, 
{ 
        text: dataObject.partner_company_name, 
        icon: "", 
        state: { 
         'opened': true, 
         selected: false 
        }, 
        id: 222, 
        children: [], 
        a_attr:{"(click)":"redirectToComponent","userid":userid,'level':'2'} 
       } 
        ] 
     } 
    }) 
    } 

結果菜單添加到動態

<div id="data"><li><a userid="3" level=2></a> 
<li><a userid="4" level=2></a></div> 

我需要angular2事件偵聽器附加到錨爲用戶導航到正確的組件基地厄運點擊。

+1

你做角棒具有角人:(angular2是被編譯爲JavaScript,因此點擊屬性將被編譯並期待不同 – madalinivascu

+0

它不應該是'$打字稿(」 #someId「)。attr('onClick','alert(」msg「)')'?爲什麼不是'$(document).on('click','#someId',function(){})'? – Justinas

+0

不認爲有可能這樣做 – S4beR

回答

2

沒有Angular2點擊事件。 (click)只是用於將事件處理程序添加到DOM click事件的Angular2語法。

Angular2值和事件綁定不能動態添加。它們只有在靜態添加到組件模板時纔有效。

只需使用

$("someId").attr("click","event") 
+0

事件需要使用router.navigate到另一個組件我可以從普通的js事件嗎? – baaroz

+0

範圍您提供的信息你的問題太狹窄了,我不知道如何提供支持。請編輯您的問題並添加演示您嘗試完成的代碼。 –

+0

我更新了這個問題,希望現在的任務會更清晰 – baaroz

相關問題