The contract for the left-handed-hitting Castro is pending a physical.
A nine-year veteran, Castro, 32, hit .232 with 13 homers and 30 RBIs in 79 games with the Minnesota Twins last season. In 825 career games, he has hit 86 homers, driven in 292 runs and averaged .231 per season.
A first-round pick out of Stanford in the 2008 draft, Castro played six seasons with the Houston Astros before spending the past three seasons with the Twins.
Castro rounds out an Angels lineup that added third baseman Anthony Rendon and should have top outfield prospect Jo Adell in the big leagues early this season.