You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

移动端视图下清除删除弹窗会话及重复密码字段问题

搞定移动端删除弹窗密码残留的问题

嘿,我明白你遇到的麻烦了——删完会话后再打开删除弹窗,密码框里居然还留着之前输的密码,这确实有点闹心。咱们来一步步把这个问题解决掉:

先捋捋问题根源

你给的按钮代码里已经加了(click)="password=''"想清空密码,但没生效的话,大概率是这几个原因:

  • 弹窗里密码输入框绑定的变量,和你在按钮里清空的password不是同一个
  • 删完东西之后,没同步把password给重置为空
  • 弹窗的DOM没及时刷新,旧密码就赖在那儿不走了

具体解决办法

1. 先确认变量绑定对不对

先去看弹窗里的密码输入框,是不是真的和password绑定上了?比如得是这样的:

<input type="password" [(ngModel)]="password" placeholder="请输入删除密码">

要是输入框绑的是别的变量,那按钮点破了天也清不了这个框,必须保证两者用同一个变量才行。

2. 删除成功后一定要重置密码

光点按钮时清空还不够,得在删除操作彻底完成后,再把password清一次。比如你的删除方法可以改成这样:

// 假设这是你处理删除的方法
deleteTarget() {
  // 调用接口执行删除
  this.yourService.deleteSource(this.sourceId).subscribe({
    next: () => {
      // 删成了!赶紧把密码清掉
      this.password = '';
      // 顺便把弹窗关掉(如果需要手动关的话)
      const modalElement = document.getElementById(`delete_modal_${this.sourceName}`);
      if (modalElement) {
        $(modalElement).modal('hide');
      }
    },
    error: (err) => {
      // 删失败了也可以考虑清密码,避免用户重复输错
      console.error('删除失败啦:', err);
      this.password = '';
    }
  });
}

3. 优化按钮的清空逻辑

可以把按钮上的(click)="password=''"改成调用一个专门的方法,这样后续调试也方便:

<button 
  type="button" 
  class="btn btn-outline-danger btn-sm icmn-bin" 
  data-toggle="modal" 
  data-name="{{source_info.source.name}}" 
  [attr.data-target]="'#delete_modal_' + source_info.source.name" 
  (click)="clearDeletePassword()" 
  *ngIf="source_info.source.assigned === false"
>
</button>

然后在组件里写这个方法:

clearDeletePassword() {
  this.password = '';
}

4. 实在不行就强制刷新视图(兜底方案)

要是上面的方法都试过还是不行,那可能是Angular的变更检测没跟上,咱们手动触发一下:

// 先引入ChangeDetectorRef
import { ChangeDetectorRef } from '@angular/core';

// 在组件构造函数里注入它
constructor(private cdr: ChangeDetectorRef) {}

clearDeletePassword() {
  this.password = '';
  this.cdr.detectChanges(); // 强制让视图更新
}

最后总结一下

核心就是在打开弹窗前、删除完成后,都把绑定密码的变量重置为空,同时确保输入框和变量的双向绑定是对的。这样再打开弹窗时,密码框就干干净净啦!

内容的提问来源于stack exchange,提问作者SARANYA

火山引擎 最新活动