【问题标题】:unable to set value for a form control in an angular component using jquery?无法使用 jquery 在角度组件中设置表单控件的值?
【发布时间】:2019-07-31 02:47:20
【问题描述】:

我有一个 Angular 5 ui 项目。我的组件模板 html 中有一个文本区域。我正在尝试使用 jquery 从 component.ts 文件中为文本区域设置一个值。但是它不起作用。知道这里有什么问题。

     <textarea id="messageTxt" formControlName="message" rows="6" [placeholder]="'PLACEHOLDERS.MESSAGE' | translate" (keyup)="calculateMessagingSegmentCount(messageTxt.value)" #messageTxt></textarea>

从我的组件中我正在这样做

    @Component({
      selector: 'pc-sms-template-form',
      templateUrl: './sms-template-form.component.html',
      styleUrls: ['./sms-template-form.component.scss']
    })
    export class SmsTemplateFormComponent implements OnInit {
      ngOnInit() {

        $('#messageTxt').val("FEDEX@@@@@@ ");

       }
    }

我已经正确导入了 jquery 并且没有编译错误但是 textarea 没有设置为值 FEDEX@@@@@@ 。任何想法可能是这种行为背后的原因。我知道在 Angular 组件中使用带有打字稿的 jquery 并不是很好。但由于某些特定要求,我必须使用jquery

谢谢

【问题讨论】:

  • 使用 FormControl 在 Angular 2+ 中不需要 jquery。
  • 尝试,更改值​​后发送一个跳跳器 $( "#messageTxt" ).trigger( "change" ); (但确定我不知道是否有效)

标签: javascript jquery angular typescript


【解决方案1】:

您必须在 keyup 事件中做某事,您能否通过删除 keyup 进行检查,这应该可以解决您的问题。

我附上了工作快照供您参考。 working sample image

【讨论】:

  • hi sasi console.log($('#messageTxt').val()) 这打印未定义
  • 你试过去掉 (keyup)="calculateMessagingSegmentCount(messageTxt.value)"
【解决方案2】:

在渲染视图之前调用OnInit方法,请改用AfterViewInit方法:

@Component({
  selector: 'pc-sms-template-form',
  templateUrl: './sms-template-form.component.html',
  styleUrls: ['./sms-template-form.component.scss']
})
export class SmsTemplateFormComponent implements AfterViewInit{
  ngAfterViewInit() {

    $('#messageTxt').val("FEDEX@@@@@@ ");

   }
}

【讨论】:

  • 它也不起作用。实现了AfterViewInit接口并尝试了。
  • 使用console.log($('#messageTxt'); 在控制台中记录元素,看看输出是什么
  • console.log($('#messageTxt').val());这打印未定义
  • 你能给我们看一下“sms-template-form.component.html”文件吗
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-19
  • 2020-11-13
  • 2021-02-09
  • 2018-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多