is saying that the value of Shape.stroke should get the value of Link.data.defaultColor, after applying a conversion function.
But there’s no “defaultColor” property on your link data. (Actually, you don’t show it, but that’s what I assume is the case). So the Binding is not evaluated, leaving the Shape.stroke as the default color, black.
Perhaps you could use a Binding like that used in the multi-color validation example on GoJS Validation -- Northwoods Software. (Scroll most of the way down – it’s just before Grouping validation.)
new go.Binding("stroke", "fromNode", function(n) { return n.data.color; }).ofObject()
This should work well, even if the user reconnects the link using the RelinkingTool.
But note that if you call Model.setDataProperty on your node data, it won’t automatically update all of the bindings on the links that connect with the corresponding node. The use of the conversion function “hides” that dependency from the binding mechanisms.