iT邦幫忙

2023 iThome 鐵人賽

DAY 23
0
SideProject30

Electron Angular軟體架構與簡易功能實作學習路程實記系列 第 23

Day 23 - 功能開發-8-使用者文章輸入驗證與儲存

  • 分享至 

  • xImage
  •  

提供欄位驗證確認資料是否輸入

  1. 設定表單:
    • 使用 Template-driven Forms 來建立表單。
  2. 定義驗證規則:
    • 使用內建驗證器,Validators.requiredValidators.minLengthValidators.email 等.
    • 使用 .dirty 來判斷控制項是否被使用者修改過。
<label class="p-2" for="username">標題:</label>
        <input class="p-2" style="width: 250px" pInputText id="username" type="text" [(ngModel)]="title" required  #titleCtrl="ngModel"/>
        <div *ngIf="titleCtrl.touched && titleCtrl.invalid">
          <p-message severity="error" text="請輸入標題"></p-message>
        </div>
      </div>
      <div class="flex justify-content-start">
        <label class="p-2">旅遊時間:</label>
        <p-calendar [(ngModel)]="PlayedTime" [showIcon]="true" #playedTimeCtrl="ngModel"></p-calendar>
        <div *ngIf="playedTimeCtrl.touched && playedTimeCtrl.invalid">
          <p-message severity="error" text="請選擇時間"></p-message>
        </div>
      </div>
      <div class="flex justify-content-start">
        <label class="p-2">類型:</label>
        <input class="p-2" style="width: 250px" pInputText type="text" [(ngModel)]="ArticleType" #articleTypeCtrl="ngModel"/>
        <div *ngIf="articleTypeCtrl.touched && articleTypeCtrl.invalid">
          <p-message severity="error" text="請輸入類型"></p-message>
        </div>
      </div>
      <div class="flex justify-content-start">
        <label class="p-2">地點:</label>
        <input class="p-2" style="width: 250px" pInputText type="text" [(ngModel)]="Position" #positionCtrl="ngModel"/>
        <div *ngIf="positionCtrl.touched && positionCtrl.invalid">
          <p-message severity="error" text="請輸入地點"></p-message>
        </div>
      </div>
@ViewChild('titleCtrl') titleModel!: NgModel;
@ViewChild('playedTimeCtrl') playedTimeModel!: NgModel;
@ViewChild('articleTypeCtrl') articleTypeModel!: NgModel;
@ViewChild('positionCtrl') positionModel!: NgModel;

儲存文件

editSave() {
    const article : Article = {} as Article;
    if (this.articleId != null) {
      article.IdArticle = this.articleId;
    }
    if (
      !this.titleModel.valid ||
      !this.playedTimeModel.valid ||
      !this.articleTypeModel.valid ||
      !this.positionModel.valid
    )
    {
      this.saveCheck = true;
      return;
    }

    article.Title = this.title;
    article.PlayedTime = this.PlayedTime;
    article.ArticleType = this.ArticleType;
    article.Position = this.Position;
    article.Description = this.Description;

    if (this.user !== undefined && this.user !== null) {
      const userArticle : UserArticle = {} as UserArticle;
      userArticle.article = article;
      userArticle.idUser = this.user.IdUser;
      this.articleListService.saveUserArticle(userArticle).
        subscribe((data: any) => {
          console.log(data);
          void this.router.navigate(['/articleList']);
      });
    }
  }

上一篇
Day 22 - 功能開發-7-使用者文章編輯
下一篇
Day 24- 功能開發-9-文章列表編輯與刪除功能
系列文
Electron Angular軟體架構與簡易功能實作學習路程實記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言