ネストがあるコンポーネントでupdate処理をする際の場所について

初めて質問させていただきます。
下記のようなネストがあるコンポーネントで更新処理を行おうと思っております
(省略してますが 子2には、ボタンを押すとinputに変わるような処理があります。)

//compnent親
template: `
<app-child1> [users]="users"></app-child1>
`
//compnent子1
template: `
<li *ngFor="let user of users">
    <app-child2> [user]="user"></app-child2>
</li>
`
//compnent子2
template: `
{{user.id}}:{{user.name}}
<button (click)="buttonClick()">更新</button>
`

userServiceで更新処理を行う場合、子コンポーネントのデータを親に戻してから更新処理をするべきか
子で更新処理をするかで悩んでおります。

パターン 1

// userService
private userEditSubject = new Subject<User>();
get userEdit$() {
    return this.userEditSubject.asObservable();
  }
// 子2から親に送る処理
  sendUser(user:User) {
    this.userEditSubject.next(user);
  }
// Api通信用の処理
  putUser(user:User){
    //更新処理
  }
// 親.ts
  ngOnInit() {
    this.userService.userEdit$
      .pipe(takeUntil(this.onDestroy$))
      .subscribe((user) => {
      this.updateUser(user);
    }
  }
  updateUser(user:User) {
    this.userService.putUser(user);
  }
 // 子2.ts
  buttonClick(){
    user = this.inputUser
    this.userSevice.sendUser(user);
 }

パターン 2

// 子2.ts
 buttonClick(){
    user = this.inputUser
    this.userService.putUser(user)
}

どちらの方が良い設計なのでしょうか?
よろしければ何故かも教えていただけますと幸いです。

「いいね!」 1

自分であれば「パターン2」を採用します。
理由は単純にその方がシンプルだからです。

「パターン1」を採用するメリットは、ちょっと思いつきませんでした。
親コンポーネントが保持している情報が必要であれば、子から親に@Outputでuserを渡して、親にputUserさせます。

「いいね!」 2

ご返信ありがとうございます。
パターン2を採用することにしました。
パターン1を考察した理由としましては、CRUDはすべて親コンポーネントから行ったほうが良いと
思い込んでいたからです。その際、@Outputを使用するとバケツリレーになってしまうため、userServiceにSubjectを作成してデータを渡していました。

「いいね!」 1