Скрыть и показать div в Angular

Вы можете получить перечисление из строки с помощью Enum.valueOf() . Позаботьтесь о том, чтобы в других ответах не упоминалось, что Enum.valueOf() выдает IllegalArgumentException, если передается строка, которая не является допустимым членом перечисления.

Не забудьте правильно форматировать и отступать от кода, он помогает нам (и вам!) читать его и понимать, что происходит:

// note the capitalization, and the singular 'Color'
private enum Color {RED, BLACK}; 

// At least with the code provided, you don't need colorGuess or colorVerify to be
// instance variables, they can be local to the method.  Limiting the amount of
// time a variable lives for (its scope) is critical for quality, maintainable code

public Color getColorGuess() {
  Scanner in = new Scanner(System.in); // this should be outside the while loop
  while(in.hasNextLine()) {
    // .toUpperCase() lets you type "red" or "RED" and still match
    String line = in.nextLine().toUpperCase();
    try {
      // Enum.valueOf() throws an exception if the input is not valid
      Color guess = Color.valueOf(line);

      switch(guess) {
        case RED:
          return guess; // return, rather than break, to exit the method
        case BLACK:
          return guess;
        // As long as your switch statement covers all cases in your enum, you
        // don't need a default: case, you'll never reach it
      }
    } catch (IllegalArgumentException e) {
      System.out.println("Invalid color selection!");
    }
  }
}

Обратите внимание, что мы теперь возвращаем guess в обоих случаях, что несколько избыточно. По крайней мере, с приведенным вами примером кода вам фактически не нужно отслеживать colorVerify вообще, потому что метод будет продолжать цикл навсегда до тех пор, пока не будет введен допустимый цвет. Вы можете заменить весь оператор switch в моем методе простым return guess;, поскольку вы знаете, что это допустимое предположение, как только Color.valueOf() возвращает значение.

Другими словами, вы можете очистить свой код до:

public static Color getColorGuess() {
  try (Scanner in = new Scanner(System.in)) {
    while(in.hasNextLine()) {
      try {
        return Color.valueOf(in.nextLine().toUpperCase());
      } catch (IllegalArgumentException e) {
        System.out.println("Invalid color selection!");
      }
    }
  }
}

Обратите внимание, что метод теперь static и использует блок try-with-resources , чтобы закрыть Scanner, как только вы закончите с ним.

0
задан OneLunch Man 22 February 2019 в 13:02
поделиться

2 ответа

Вы можете связать директиву * ngIf с вашим компонентом с переменной, установленной в True, а затем по нажатию кнопки изменить переменную в false.

Шаблон:

<div *ngIf='variable'></div>
<button (click)='showContent()'></button>

Компонент:

  variable = true;
  showContent() {
  this.variable = false;
}
0
ответ дан Zouhair Ettouhami 22 February 2019 в 13:02
поделиться

Вы можете использовать * ngIf

Шаблон:

<div *ngIf="display">Test Data</div>
<input type="button" value="click" (click)="update"/>

Компонент:

display = true;
update(){
   this.display = !this.display;
}
0
ответ дан Suresh Kumar Ariya 22 February 2019 в 13:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: