2017-02-22 8 views
0

У меня есть кнопка, которая принимает несколько жестко заданных массивов. Я не использую *ngForПередача нескольких жестко закодированных массивов в (щелчок) угловой 2

<button type="submit" (click)="search(checkBox[0],checkBox[1],checkBox[2],checkBox[3],checkBox[4],checkBox[5])" class="btn btn-default btn-md left-button">Search</button> 

В моем компоненте он будет проверять только checkbox[0], но ни один из остальных.

public search(ssn,userId,lastName,office,role) { 

     if(ssn.checked == true){ 
      console.log("What is checked: "+ssn.name+" input: "+this.ssn); 
      this.user = this._searchService.getUserBySSN(this.ssn); 
     } 
     else if(userId.checked == true){ 
      console.log("What is checked: "+userId.name+" input: "+this.userId); 
      this.user = this._searchService.getUserById(this.userId); 
     } 
     else if(lastName.checked == true){ 
      console.log("What is checked: "+lastName.name+" input: "+this.lastName); 
      this.user = this._searchService.getUserByLastName(this.lastName); 
     } 
     else if(office.checked == true){ 
      console.log("What is checked: "+office.name+" input: "+this.office); 
      this.user = this._searchService.getUserByOffice(this.office); 
     } 
     else if(role.checked == true){ 
      console.log("What is checked: "+role.name+" input: "+this.role); 
      this.user = this._searchService.getUserByRole(this.role); 
     } 

    } 

HTML Я 6 флажков сделать так:

<div class="row"> 
        <div class="col-md-12 box-content right"> 
         <div class="input-group"> 
     <span class="input-group-addon"> 
      <input type="checkbox" name="lastName" (change)="checkBox[1].checked=!checkBox[1].checked"> 
     </span> 
          <span class="input-group-addon"> 
      <label>{{checkBox[1].label}}</label> 
     </span> 
          <input type="text" [(ngModel)]="lastName" name="lastNameTest" class="form-control" placeholder=""> 
         </div> 
        </div> 
       </div> 
+0

Возможно, потому что 'ssn.checked' является истинным, и вы использовали' else if'. –

+0

@JBNizet У меня было 'if' для всех из них и samething – Drew1208

+0

Откуда вы знаете, что« он будет проверять флажок [0] ». Что это значит? –

ответ

0

Вместо передачи в этих элементов по одному за раз, вы бы лучше передавая объект массива и проверка его там.

Попробуйте это:

<button type="submit" (click)="search(checkBox)" class="btn btn-default btn-md left-button">Search</button> 

Тогда ваш метод поиска становится:

public search(checkBoxArray: []){ 
    //Assign local variables here 
    //Such as let ssn = checkBoxArray[0]; 
} 

Если бы это было возможно для CheckBox, чтобы вместо того, чтобы быть объектом с парами ключ/значение, что было бы легче получить доступ , Все это говорит о том, что если вы пройдете в этом массиве, вы можете console.log весь массив и посмотреть, что на самом деле определено в этот момент времени.

+0

'search (checkBoxArray: []) {' говорит 'Элемент tuple не может быть пустым'AND', 'let ssn = checkboxArray [0];' fail, когда я пытаюсь проверить его здесь 'if (ssn.checked == true) {'say' свойство проверено не существует type never' Спасибо за ваши усилия – Drew1208

+0

Если у вас есть лучшее решение, поделитесь своими возможностями, это, как говорят, два беспорядка с этой страницей. – Drew1208

+0

Я думаю, что вы хотите по-другому архивировать - вы должны поддерживать состояние этих флажков в своем компоненте, а затем просто запускать метод поиска в этом массиве при нажатии кнопки (без передачи его). – chrispy

Смежные вопросы