I assume you use Reactive Forms here. There's a chapter on Reactive Forms in the Angular documentation. It's an easier way to manage forms.
To get the selected value, you can use selectionChange.
<mat-form-field appearance="outline" (selectedChange)="onSelectionChange($event)" formControlName="accessType">
<mat-label>Access Type</mat-label>
<mat-select formControlName="accessType">
<mat-option>--</mat-option>
<mat-option value="paid-out"> Paid out</mat-option>
<mat-option value="free"> Free</mat-option>
</mat-select>
</mat-form-field>
(Use formControlName if you have a FormGroup or [formControl] if you only have a FormControl).
When the selection changes, a method that I named onSelectionChange() is called.
$event contains the value you selected. You'll get a MatSelectChange object. To get the value you selected, use the value property.
onSelectionChange(event: MatSelectChange) {
if (event.value === 'paid-out') {
myForm.controls.accessType.setValidators(myValidators)
myForm.controls.accessType.updateValueAndValidity();
}
}
When the selected value is paid-out, validators will be set on the form control (here your Access Type form control), then the updateValueAndValidity() method will be called to update the form control in order to apply validators on it.
To remove validation, call clearValidators() method. You'll remove all the validators, so if you have one or multiple validators you don't want to remove, set them after and call updateValueAndValidity() method.