Expected 2 arguments, but got 1.ts(2554) core.d.ts(8064, 47): An argument for 'opts' was not provided

That is because of breaking change in new Angular. You need to pass like below

@ViewChild("password", { static: true }) password: ElementRef;
@ViewChild("confirmPassword", { static: true }) confirmPassword: ElementRef;

A new static flag has been introduced to not break existing applications, so if you want to keep the old behavior even when you’ll switch to Ivy, you can write:

@ViewChild('password', { static: true }) static: ElementRef<HTMLDivElement>;

You can further read here : https://angular.io/api/core/ViewChild#description