Пометка поля формы #myFormField vs # myFormField = & ldquo; ngModel & rdquo;

Функция:

public float simpleSimilarity(String u, String v) {
    String[] a = u.split(" ");
    String[] b = v.split(" ");

    long correct = 0;
    int minLen = Math.min(a.length, b.length);

    for (int i = 0; i < minLen; i++) {
        String aa = a[i];
        String bb = b[i];
        int minWordLength = Math.min(aa.length(), bb.length());

        for (int j = 0; j < minWordLength; j++) {
            if (aa.charAt(j) == bb.charAt(j)) {
                correct++;
            }
        }
    }

    return (float) (((double) correct) / Math.max(u.length(), v.length()));
}

Тест:

String a = "This is the first string.";

String b = "this is not 1st string!";

// for exact string comparison, use .equals

boolean exact = a.equals(b);

// For similarity check, there are libraries for this
// Here I'll try a simple example I wrote

float similarity = simple_similarity(a,b);
0
задан embert 17 January 2019 в 10:34
поделиться

1 ответ

Просто предоставив тегу input переменную шаблона, #inputPhoneNumber назначит объектное представление JavaScript этого HTMLElement переменной шаблона.

Попробуйте это с помощью:

<p> Input Field - With Just Template Varaible:</p>

<input 
  class="form-control" 
  type="text" 
  [(ngModel)]="phoneNumber"
  pattern="[\d]*" 
  #first
  required
  />

<div *ngIf="first.errors?.pattern"> 
  Phone number must only contain digits
</div>

<div>Two Way Binding: {{phoneNumber}}</div>
<div>ViewChild Native Element: {{viewChildFirst?.nativeElement | json}}</div>
<div>ViewChild Control: {{viewChildFirst.control | json}}</div>
<div>#first: {{first?.value}}</div>

И в классе компонентов:

@ViewChild('first') viewChildFirst;

Как совершенно очевидно, viewChildFirst.control не будет определяться в этом случае. [ 1117]


Но при назначении ngModel переменной шаблона будет назначено представление FormControl этого элемента HTML переменной шаблона.

Попробуйте это с помощью:

<p> Input Field - With Template And ngModel assigned</p>

<input 
  class="form-control" 
  type="text" 
  [(ngModel)]="phoneNumber"
  pattern="[\d]*" 
  #second="ngModel"
  required
  />

<div *ngIf="second.errors?.pattern"> 
  Phone number must only contain digits
</div>

<div>Two Way Binding: {{phoneNumber}}</div>
<div>ViewChild Native Element: {{viewChildSecond?.nativeElement}}</div>
<div>ViewChild Conttrol: {{viewChildSecond.control | json}}</div>
<div>#second: {{second?.value}}</div>

<hr>

А в классе компонентов:

@ViewChild('second') viewChildSecond;

На этот раз viewChildSecond?.nativeElement не будет определено, но viewChildSecond.control будет. [+1121]


Вы можете проверить это, точно распечатав переменную шаблона, как я делал выше. Вот рабочий образец StackBlitz для вашей ссылки.

0
ответ дан SiddAjmera 17 January 2019 в 10:34
поделиться
Другие вопросы по тегам:

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